@ & & K *ClassTbl* *ClassEntry* *PTABLE* *WINDOWSEG* *ICONRESTAB* *ICONRESSEG* *ICONRES* Background *OBJTABLE* *IDTABLE* *NAMETAB* Rectangle Ellipse RoundedRectangle Polygon IrregularPolygon AngledLine Curve PaintObject Picture Hotword *RHOTWORD* Group Stage Button Viewer ComboBox Field RecordField *TbxBase* & eld bxBase* & bxBase* ColorTray ColorTray scriptButton System """""" "333333D4P 334Df DffffDD dDDDF dDDDN wwwwwwwwww pwwwwww wwwww wwwwwwwwww $N$HI$ OszH$H H$H$H* $H$H$ $H$H$H$H$H$H$H$ $H$H$ $H$H$ $H$H$H$H$ $H$H$ $H$H$ $H$H$H$H$ $H$H$H$ $H$H$ $H$H$ $H$H$ $H$H$H$H$ $H$H$H$ $H$H$H$H$ $H$H$ $H$H$H$H$ $H$Hsz zH$H$H$ $H$H$ $H$H$H$ $H$H$H$H $H$H$ $H$H$ $H$Hsz s$H$H$ $H$H$ $H$H$H$ $H$H$ $H$H$ $H$H$H$ $H$H$H$H$H$H$H$ $H$H$ $H$Hs $H$H$H$ $H$H$ $H$H$ $H$H$H$H$H$ $HOzszs OH$H$ $H$H$H$H$H$ $H$H$ $H$H$H$H$H$ $H$H$ $H$H$ $H$H$ $H$H$H$H szszO $H$H$H$H$ $H$H$ $H$H$ $H$H$H$H$ $H$H$ $H$H$H$ $H$H$H$H$ OsOsO$H zH$H$H$H$ $H$H$H$ $H$H$ $H$H$ $H$H$ $H$H$ $H$HOsOs $H$H$ $H$H$ $H$H$ $H$H$H$ $H$H$H$ $H$H$H$H$H$ $H$H$ OsOl$H $H$H$ $H$H$ $H$H$ $H$H$ $H$H$H$ $H$H$H$ $H$H$H$H$ $H$H$HsHsH $H$H$ $H$H$ $H$H$ $H$H$ H$H$H$H$ $H$H$ $H$H$H$H$H$H$H$HOHOH $H$H$ $H$H$H$ $H$HOH $H$H$H$H$ $H$H$H$H$H$H$ $H$H$ zH$H$H$ H$H$H$ zH$H$ $H$H$ $H$H$H$ $H$H$H$H$ H$H$H$ $H$H$H$ OH$H$ $H$H$H$ $H$+2 $H$H$H H$H$H$HNO@ +O+OUOU*H$H$H$ $H$H9 $H$H$H$H$ +UO+*H$H $H$29# $H$H2@ $H$H$ $H$H$H$H $H$NO$ $H$H$ zOH$H$H$H$H$H$ $H$H$H$ $H$H$ $H$H$H$H $H$H$H$ $H$H$H$H$ $H$HO$ zOH$H$ zH$H$H$H sOH$Hz )>1>>>66)1727>+))6+>7))>)>)>+7>77>7>>7 1))+>)6'66''''''''&&/&'5& &&%&%&&%%&%& &%=%&&&% %%% %$% &&& %&$&&4&&&&& %%%%%%$$!$% %#56&0&&'6)%'&5&%&%% !""$%%&66>95&##%$ %%%%%% &6''86')>)6>'&/)*NN9)'&&5&44&&%%5%%&&&&&5&%&0)>:& !!!""&61"" 1+17>>>))7>1>>8)6>+8+>7+7>>>>1)1>77777>+1)66))0)0�&&'&&=5&&4%&&&&& &%%=%%%%&%%%% %&&%%=%% &% %$%&&%%=%$&%%%%&%%4$%$% &%$!$%&&&5'#655&56&&)0%% !$%%%'>+7'5&&%&$= %$$=%&&'&'6'680'&''5'7N;7>'&&#&#&&&%4&'5&4&&5%#&&&'>>>%$$" $%&6F8&! 1+77>>+>>7776)1>8)8>1>>+>>>>7>7+777:L7>)>8>8+)))'6'6''''&&&#&5 &&&%&% %4$& &%=%&%$%$&%&&%%%&$$%%%$%& %%%%%%=4%&&&%%&%$$ %%""%%&&&&&''&'&'+$&)$$ $%%$ "=$$$='#0 % %%%%%%$$$%$ %%&&&#'6'0050')>99:8+)&&&%&&&/55%&'%40&&&%&&50685=%$3$$5&>H5 " 79+>99+777>>+>>>>>7777+7+)>>>+7>777177>)>>>)6>))'0'05&'&&4&'& #&&&&&%&% %%%%%&%&%%$%&%&&&%%%$%$$%%%%$%$%$&%%&&%&&&&&&$$"&% $%$&&%5 &5&&&)>7 &&%$$&=% %$%$$$"$"$$%==%%&#'6'&&5'')16)7F+'/&&0&&&5'&#'&&&&#&&54&'5'0)655'+:N9&%!!! +7+797'7>>766>>>)>+7777+>>+71:L:7+11>)>))+))06'''#''/4&&=&&&&&&%&&&&4 %% % 44 %% %& &=%%%&&44$ %$$%%$ $%%%%% =4&% %& $&&%%=& &&&&& 5'506++%%=== $$""" !!!!! %"""$$$%%&&06'55''')6)67:85%5%&%&&7'&5'5&&&54&5/#'8>>O@:70&%!!! +97797177>+>>>+6+17777>+777:9F:971)68)')06'0'0''6')0'&5'&&&&' &&&4%$ %&%%4%&%%%4%%%$4%%$% 4%$%% %4%%=%%%% %=$ 4 ==$%%&%&&'&66>>)0$ $"$"$" "$= &%&&560&%''5&'6679)''&'&&'/&#&&5&&&&&&&5'/5)7LF77>54%$"""! 71799977>+)8+++>17,77>779::77777>>8)6'''0)0'6006''')#'#&&&&&&&&%&%$&%&&&%%=% &%&%$%%%%$ $$=%%%%= $%$$$ $$=$$$%& %%&4%& $&=%%$%$$%%&&&'&'6)>66'#$$$""" $"3"" $$$$" ""$!$$$&% &&4&'&&#&&'0)>>9)6''&'&&&5&''5&&&5&&50'>L:9797:'$$#=%!" 77977917>7>7>>>777797729997977+1+1)866'05/)&'0)00'6'5''55'##4&&&&&%& %%&%%&5&%%%%%=%&$%==%%%% % $%%$%$$=$%% %%%&%% %&4$$4 %%%$= %&%&'&&6'0'')'&'%$%%"$ !$$$%&%&& &#&&&&'6&&'668:+')'##&#'''''6'5000)>8P9>86>L)'0&%&$ 9997977>8)>))>)>+9:9-:F777>+>>)>>6>))60'&&&55'0')'60605'&''%&&&&&$"%&&%& $%&%%$$%$$$%%%%%&%$%% % &%%&&&&%= $% $%$$=%% &&&'&'5&&&$$% %%$ !$$3$ "!!!!"" $%%%%=& $%''&&5''&0)6?&60055/&5'0''''81FK7)6''&'0798''%$$"$"$ 99977976>))6>>+>199LJ?:9>7>>+>>))>))66''#0&&50''6'6''''&6&4&&&&& =%%&%%%=&$4%&&= &%&%%$$"$ $=%%%%&$ %$%$$$%% %$ & %&%$$"%%%&%%$4%&&&''4'&&'&& $%=%$%"""""!!"" !!"""! !""$=$ !"4$=$ %$%=%&&5&/5&5&0>)9L>)6'&'&&'5)18LPK766/5')+77&&&%& 772997781>>>)179G?ON99977>87+>>6>)6)'0'6'&#'#''0'#'06'0'#&5&& &&% %&54%%%&4&%&&& &%%=&$$ $$$$ %%$%%%%%&%=% =&%4 % &%%%3 =%%%=%4$ &&&&'&&&4&%%$% "$$"%""! $$=%&&6&##5&##5568)9>46''5)+9HCP@1>'''5&5&#'08+7)0&&%&$$$$ 29977>7)>+7+1799LOLF77+77788>)8)>6)')'6'&'&'5')60')')6#'''/''&%&&&#%&=&&&&&&&&&&&%&&%%$%$ $%&&&%$ %$$$%$$=&% %%$&%% $===4&% %%&4%&5% &&%&%= $%"=" """$% $$"4&5/5'#&&5&&%%)>'+?)6))1,NKJ97>'''&'5'55&00))6>&&%4%%= 7997717+>+8779:NK9977+>>+>>+>++)8>6'665'0&5'#&5')0))'00&&'#&55&4&%%& %%%&4%%&&&4&&&&=% %&%%&&"$% %$$$ $$$$%%&%%%%$%%%&=%%$%& %4&%& %&=%%%$""" """$$$$%&5&#&&%%&=%&&5&'6>L7)7FLJO97)6'/&'''5/55''6')8>''%&&&%%""!! 797977+>+19:9NHF9+7+7+7>>)7)>6)>>))))6&0)0'&&6'&60)6'''''4&&&&'&&5&&%%%&&%&& 4&4$& $ %%$3%$ $$4$ %$%=$$$ %==4%%4$%%%$ $$&%%%$ =%% &&&%% %%$$" "!"!" =&&&&&%$ =4%&&'667F;CCON>)'5&&'&55'&&&&'5#'''6')'8#&%%$" >1779779F::LJ::9>>+77>>))868+)>+0))'6'>)''5&'/'6'&6)00'5'&'&&&'&&&& %&&'%&5&&&4&&%&$ $"%$%%$%%= %%%$$$$&% %$&%%$ &4&%$$3%%%%%& &&%%$$$ !"$%%%=% %$%= %&%&&57,99NMK>6''-&''5'&&&'#&5&05))+6'55%%%%$ '19779::KRMNG99>7>7>+>>)+)>>)6>>6)6)))>6''0#05'60)'&'&&&0&%&'&'5& %&&'& &&%%&%%&$%&%$&= %%$%$$%$$% $%=%%$ %%&%%% $%$%%4&%%%&&$%= $&%& %%%&$%$$""$"! """$=%%%%%"%$4$% &598>9PL:FL)'''& 54'5''' &&&&'5#'6087#0'&%%%%=%! 67799F:JJ@?9977>+797+>666+8)>++0)8)')))'))''6'5'6'0''&65'60&5&&&&4&'4&#%&4&%$&4 %4&&&=%%% %$$$$$&%$4%&$=&4%&&$$ =$%%$%$%%%&& $$&&%% &&%= %$$"3! !"%%$$ $$"%"$%&%%&'&07JL>+>+N76&&&&5&&&%&&'&5&6&'+'&##% $$$"$!!! >777FCK??:C771>>7+71)>+>>))>68>>)>)666')6''6'''0'5')'5'5'&&4'#'#%&/&& %4&% &&%&%%%%&&%%%$=$$=%%$%$$% &&44 %&&&%4& % %%%%% %%%%$ %&5++>60)77:>6''&/&'&'&&&% 4&5&&&#&%&)76'&%%$ 799:O::97977>+>)>+++>+6++)8)>>+)6))'>)06'0)60'5'/&0''''''0&'&55&5&&'&4&&&% &%4%&%%%$%& =$&%&$=$$$$ %""$%$%&4&=%%%%%&4 &&$&&#&= %$%="$$$$%=$ =%$%&=&'&&/&&&/)611N>6'5&'&5&55'&&&5'&5&&&%&')+'&%%$$%$$"" F:?JL97997+9&>>76>1>)>1+>)8>6>68+8>>6)66)6066''&&5'''606'6'&&&05&&#/&&#%&&%%%%&&&%%&& %&%$%%$ %%$$$"$"$$=$%4&&& $$%%%%$%&&&5&&& &$%%3%%4% %$$%%& $4& && &4&'6>+G+6&'6&&'#5&&&%''#&%5&%&5)>96 %$%$$$ ?PN92+771799&))>>>8>>+>1>)>+)>)>8>+)6)6)666'8'55&&555'&0&&0&0&''&&&&&5&&&%$%&&%%&&&&&=4=& %$$$$$%%" =&# %$$"$$%& &%&%&'&55&"4$ %%%%$$%%&5&&&& "===%4&&4&&%#&')>)>F'&&5#&&6'5&&&%4%&&'''>5&&&%$= NL99+)>++777>6+>>+7)+)+>6>0)8+>)'>)66)8)08>>00'5&&5'0')'6'0'5&5&55&5&&&&&%&&44%&&&44=%%%$$$%$4%% =$$$$ $"$$$ =%&$$" $%&$% 4%%%&'''%% %%%&&%%% '''&&&' & &&&&'0#6897%'56#&'&05#'&&&% &5&'5&&#'&&%%%$%$ L:9+7>))17+1777>>)8>+>>>86>)6)')6'6))6)0))>&605'#''&50#6&0''&&'55%&5%&& %%& &&% &&%%$ % %&==$$$$$ $%4$$$%% &&&&60#4%%&&&&&%&%&655&&&4 %"%&%$&%&&&&&#')))87)5'''/&%'5&#&&%%&&4%4%& &% &=$$$ OL:>1+8)>777>))77>+7>++>)>))6)80>55'68>)80)068)60%5'5&'&5'550'))5#&&&&4=4%%&%&&&&&&%% %%%$%$% $$$$$$$%%=$$$! 4&4%$ %%%%&%&&&&&6&'0&#&4& %&&66'&5&' ""$$"""$%&&% %&&&&''''0960''&&5&%"=%%%$$%$ =&$64#5%% NNL:F7>+79777>+:77>>>>)+>6+'806)05#&0))68)>)6>'65'5#'& '&'6656)6&55&'%% &&&%&&&&&%%%$%%%$%$ $ = $%$$$$%$$%%4=% "$$5&% %=% %% &&4&'660)66'#&&%&&5006'&&$ "%%&4&&%& &#&&#'&+:65''5& 5'4%$# 3$=$)'&=555& & $$"$! ??J?:97>)>667779?,77>>)86>>>))>0))$4&)0>))8'))6)68')&''%560>0'60'# && &&&4&&& & $%&&4%=%$$%$==%$%%%$$$=$$ $$$$!$%%='%&%=&4&&&%%'0)>9+60)'&'&&&%%&0))0) """""$$$$%%&&&&&4&&&&5'&''976&7:15%$%"&>=&''''&9>7>>'%= N?LJ?7797>))8+799N)+>+)6))8)>6>))+6#$')8>)666>8>)665'&06''''66'''05&&&&4&&&&%4&&&&&=%&%&&%% %&$$"$$%"$ %$%$$ 4%%% %%$%%%%&56>7976)&'&&&&%%&&'))6% !$"%$ $%%%&%%4&=&%'&&=&#L@9&&4%$$"$&&%%%)'&&5&&66 ""!!$ :L?PJ;C91780>>729:?>>608666>>))>>)665'665>>)>)>)'5)55&&''605006''&05&&&4%&44&&%#'44$%%$ $$$$$$= $$$%&%4%'%%& %=%&4&5667216'0&/&4&=&A)'>" "!$"$"$ %$%%=%% &$&& %4&%&9645%&&&%%'/4&5#'&04&54'60 789L;?FF2GN:+>7999:F>&'>&'6>)>>>6))+>'06))6)>)))''660'656)>'66''0'#/&&5=& &&%&&&&&% %4&4&& %&%$$ $$$$$ "$=$$$%&%$4)&%4%%&4'&'6>>99))6%= %&& 44%6)7+ """=$ $"$$%%%4%%%4%%%4&&#>1&/05&&&# '&5&&&&&&%#6606>%$$" $$$3"! 7>+9:;:,>7::N91777>G977>1>)6)66)661)7&&')>>7)6>'6)6'''0066))606'0'&/'&&5&&&5&&&&& %%=&%%$$ %& $$$"$ "%$$$ ""$$"$$%% %%&&&&''''&&&&&'0>>9L1)6% % %%& %#06)6) %$$%&%$&&=&%40'>1'556'&/&&&&'/5&&&&&##5)'+6" %%$$$"$$ '&6)19C97>+>79N@+8'7:(76>>>+68))>))>>)6%)0>>)>6)6'''0'6''5066&06&''&5'&54&&&&&#%% %%%%%%$%%$$ $"$$" %$&%%%&%% 50&&&&&5006+9:17&% 4%$&&&#'6)'6) !""&J& "$$%&&%$! $$=%=$$% %%&&%&&+6%&'555'5&&&%&5&&%&5&''>87%% "$$$$ #5'5+9?:9+76>79LNN779+)' )6>>)'>7+677+> '0))786)660)'')6'6)'50'0'&'''&&&&45&&&5&&&&%%&=& %$=%%$&$$ $"$$%$ $4%=$ %%$ &)'&&#''')))+F77%$%$%%$=&&5&%4')" $E&$" %%$$%&&&')>%5'5'&#&&&&&%&45&&%&&0'5> $=%$ 05''>9?:+>>>6779L@;L9?)'5>7>)6>>)>++7+7>)>8>>66')65)06'))6&0'))55'''&#&&&&&&=&&4&%&=$%=&%% $$$$$$$" "$%$$%$%$&%&%4%%5))0&&&'008>>9>%=$$ % &5&"% &')& !$9 & %&+L)%" "=$$$$ =%%&&5#6'0655#%&&&5&5&&&&&&&'0'55&%& 4%&% 0))'>19L>977+1899::JLF?+6)877+>+>)>>>85)6>)>)>+)>>60)0)86)0)'666605''&55&55&4&%&&&&% &%%%%=$$ $$$$" "$$$$ $=% %&&&&55&&)8006606)>99%% %%%&= %%'>& "&60#%$! ""$$$==% &&5)'&%&&&&&%&&5&&&%&5'&5$% 9&&%=&&% =$ $ """$!"!" 6))')79F6>7+)17999:FLKN9>8>>876')60>+>+0'7>6))86))))))66)060)666)8''''&0&#&%&&&%4&&&%=%%%& %&%$$"$%&&%&&&&$& '))60)6')7F&$%%%$ $%%''%'')' $%%&%&&'%/>&65&&4&'&& % && %% '?& &&&&=&&$%"%==$ >:)6)77779717++9999FFGCK656&6'>)6))45%)1>7721>')8++>)>6>8680666)6064'#&'' &%&&&&&%&&4&&%% %$$% $""$$" $%==$$$% %%%&&&&$'/0'/0))6))>9&=&$%$%%'&#'&)606 $5%="! """"%$$=$&&%'5'+97554%&& &=&& %%$ =%%%&5'8=&&4&%%4%%%%"%"%$$$" 796>6++779'>77+,977799LO:6'& "%%)'&&'>781>7+77667+>>>>>+)6>666)'0'6'&&0&&&& &4&&5&4&&&%%=% $$$$$" "$"$$ %$ $$$%% %%%&&&&&&&$'+860)67&%$4= %&&'&5'')0> &00)1>&4$% $ =&%$%$ %%%&45&&>=&%%&&%$% $="$$ )+)>)>777>7>7777777,99:LN7'806))'>)68>+>79>1772>+7>71>7)+)6>')6)>060'''6&&&&&%&4&&%%&$% $&$%=%$$ =%$$" $$%=%%$% &&&&%'0+>6)'6>5%%%4&5&5''&'')60 $%% %%%& %'50',+4%&%%4%$$& 4%$=%&&&%58&5%& %$%%%=&%$% %%%$$ 5)>7)9>7717>'7,979777799P:8)76'8'&0>>)++7>)>>7777)7++1>1>+>>66))>686)8)&&&&&&&&'=%&4&%%%=&% & "%$$$$$ $$%$%%$$$ $%$%%$%% %& &''6))6)++>&&%%&&6''0')'605$ "%%++6 $$$$&$$&5&&&5'>55$ %&&&0&0'''60% %% &=$%%$%=$%%%%%$ 0>77&+++>+)7)7927+771779;K27:26)06)>6>+17:7)77+767>'77>>>+>+>6)6)))6)'''&5#&& &'#44&%&&%&%%%%%4%% $%%=$%%%% %=$%$&'''%&0)+7)&&&&55'&''660)6%" "%&1777! """"! &&&'7)& $=$&5'&&&&'0&5'/&7$ 4&4&&4&=&=%%%%4%% >7177&&)&15)>0)+79977772:LP:F7>'6'1++)>))>+'&&&&0>)5=&97)++>)>>)1++>+660''0&&7&&&&&&4%$%4%&%% $""$"$$%$$=$%=%$$%%$=%$%%$$%%&%&' &%#6>1++&&&&�&55''6'0$ !$$&)7>> $%=%%''6+7%%%&''''&'&5&&"$''>)'6&&4%%&%&&% 16+77)'0''&6)>))+1977+792:OL:99777>+671(77+8%$%5&%&%&677+7+>)+7786+)'66>'&&'&'/ && %&&4&& =%=&%% $$%%$=$%$%$$ %&$$$$ $%%& $44&%&6>6>>66&'55'&''0'&&% "" $%&>71)3 $"""%&$&%&&')018&'''&5''4$%&'6)6>91:8&&&4&&&4$&=%% 717+77''668')19>799>771779LP99799F:F9)7>7777>&0'0)&'+8>777F+1771>>+')6)666''&&&&&#'&&&%&%&%& % %% ==%$ =%$%$$% $%%$=%% %&�'6>0>)'&'&'&5&5''&&&%%$""! ""$%%'>7>'% "$$$$"$ $%=&55'5677>6 $&'/&5)&'6>6>+1669)&%%5&&5&& 79+799>7>>775'67::LF9:>)>,977779299F9F917779F)866#6>>7>)>779:777>1771+666)605'056&5&&&&%&% % &&$%%=%&%%==$$$%%%$%%$$% $$%%% $%&&%''')68))''5'&&'&&%)&& &% $=%% )7>' = $=$"$$" "4% 5&56>77A&#''5&06'')))))>)76)7)&#&5&&&&& 9979999971>7+9772GL9N:)%):9+777(779:9997279977'6'6>8>+1))+7,7:9+>1+7>8>8))060)0'4&&%&%&%%&&%&&&%%&%% &=%=$ =$$% %%% &$&%&'&&56''))>'5&&'&6''00' &4&%=$ %"$%$&'>+7' &&&&&0))>7L:&/&5&'55)668)8>>)+>'09&4&&&0&& 979997997777771>7777999:GL9977>77779F979997776088>>78))>>1+>7999L717+>>>866'066'/'5&&5&%&%&& & &%%% 4&%%%&%%%%$$% %= %=%%&%%$%%&#&&&0&''0)8)>)0&5''6)#'%&'&0&%&&%%%&&'/'>>+&% $""$%%% &55''6+79?766&"&&06>)666'6)))8')7&&066 :97+72917++>>+177>7799+F9F+7++77979979799:99'7770>)7+>>777++77>9F9L777>>)6608)')#'''&5&&5 5&$&&'&&&&'&&&%%&$&%% %&%%%%%%&=&#&%&%%6%'6050'8>)'6''&6')6&#'&&&#&&&&&&#'))')>>'%% &&'6'68)>977>)> ')6>86))0)6)>6))&:60)&' 997777977>>++777717999979771+7+1>>7997999F9999++9921>>+1+>17777>+7:F97+)+>>''6)860'&5/'&#&&4&555&&&'5&&%&% &%&&&%4 %%%%&&5&&&=&&&'''06860)8')>5')056655&&''''5& & &&56'')&%% $==%%&%5'06'087:978>1%0)6))')66+)60600079>6' :2792177771>>>777177792971177777+>977,77>999::F7GC9797+>)1717>>>++799?>66))6866>60606'55&&'&'5&#'&&&&5%&%&%%%&&&5&&&4%'&'&'60&&&'&&&&'0'608&%&&&66&''5&'&%&&&'&&&4%%%=%&&%$$"$ !"""$$$ %%5&B>77?9++7>40)>6'6'6606)66866&>)7 :7(777+>777>++777(2971>7777>+77,717172772999999:?LL7+71+1+1+>+7+717+7:9+6>>1+6)''6))))'6'6'560'''&'&&&&#%&&%%4& &&&&'&'''%')'&&@/))''5 %560)0)''#5#&#''')& &$&$%4&#%%= $$$$%=&&&&&'0)>7G7++6&'66)8))>')5)6866' 97771>>>77>>7)7+78151>2797771>+777297797797979979LNN?F9777>7>77>++18>777F9+7>)6)0'')8'065'6)506'&)0&0&&&& &&&&&'&0&6&&0'0'050&&&'5#'0'&5&&&&&)8')6'06''66'0#06&&%$%&&%#&#%$$"" $=$%$ %&4'608+7F:>&%6)>6))'66'056)'65&4'' 97+7>7)7117)>8>++>7771997977>8>77>>7999+7779779797999:92F177>777>>>1+7717,LL+>))6060)6)'66)66'''&0606''%&&46&5''6560&6'/)0&'&&505&&#'0'=$#5)6>)0860''&'6&'&''&$&&&4&)+#% $=$=%&&'&&')879:')')8>>)6'8'6'6''6&&'&0 F>777>>>+>7>)6>>77++777977>717>8++177+779,9777979+8999::+999+>7>++77776>+77997>)'506666)666)060'0')66')655''')')8600'#&0'&0'''#''5&050&%&5&5'&''')6))0'&5'55%6&0654&'56876& $$%$=&%%&&&%50')>>F777)+>0>6)''6)66'6'''5' 97)>++8)>+7>+7>781+>>+7777>7>7>)>8))+7177777977717717>771++77779791)++8>7+7>71L>'%'66))#''6)'00)06)6)/6''00)0&)))'0'5'6' '65'&&&6))0'%%0&&&&'&'006>'6860'')&4'5&))>>8)#776'&=%%$" $$ %&%&&&4#50)7:?7>8)>&'''5''56'&&&&& 977++1761>>>81)>)))>)77>77>,+1>7+)))7777177717(9>971+727+>>7776777777777)8>6+79:966088&4''''660))6>)>'6))60)#&80)6)06''000''&&&'&60#&&/&''&&0&6')81)86'66566''6'>>))7?77++'5&'&% =$$$%%$&% %%%5&#)::97>76'6&5&550&''&5&5 9:771>+7++77++86)>>8)>>77777+7+1+6))11+7>777++7>+779771>>>+7777++71)6>8)>>7>7>79,:L>766''&666666)>66>>)))6)66666))66'))'6005&'66'60&#&&65'5'''))))06)''66666)6)'6>+)9:@>8)'#'$!%$$" "%=$$% %$%=$%%&&5>7:799+60)%&&&&5'&'6&& :G77+71>117>))+88'6)>>>>7>17>777178)1>>7>777777)>)>9971>+>86+677771>))+8>)>>>)>>>1777F788&')'5')>>0)870)))>66)>)0))6)##0)'00%&'606'&'&'"4&&&%&6)66&++66')00)6'560+7>797>+06'% $$=$$ $%$%&'56++7797))5&5&406&&555' :9+777>77,+))06>'66)>>)>>7777+77>7768>>>+7>>>71+7>1277+>7)>1>77>+>>>77)+>+>>))>+>17>>99+++)61+>''))'76>)+)'6>8))6056)6>6)'65'566'5'&5%&4'#')&'>06#6>>)>6'606'0&0'7>)>77>7>'% !!""!$$"$ =&&'55+77>77,8#&'''0/)&5&5# F:9777777>)6''6#'66>+>>>)6>>777+7779+)+7>>7)>+>>>7777>+17>>)>7>79+777771>>+>>>)716+6>>+>7%'&6)>)667+6)+6&)806+)6+>)>6>))>+')00)66'6&'#'6&'''05&6)5))'+>66))05&5&5)16>>+>)'& $$&&&')>7>+>)+++'&&&&&&4##&5 FL797777)+60565600>))6>766>+7>)77779776>)77+)>>>7>77777+7>7>6+7>77+7+1+7>)>717>+++6>5+>6>)4'866)8+>8++108)0')))'>>6)')+'>)660>0'65'6''''5'0'&'60&5&))8>&))6''&&&5'>6>++>'&%$" $"=$$%%&/))+>>6+177++& '' &&&5' 9L99>71)68)50&&'6)'60)0)'>>>))+8>>177+71))))66)171777F9+,7+11+77>17>>777>>87)1+7>)))6)))))>>'>+>>#65'6>)>+>66#)+)8)>)>>>+06''66)'))''550'&&'50'5'6'&8'86))>)660'6'77+)>)60%$3$%$$ "$$$&%'%6''0)>7>717N'&&'#&&&& :L:977+6))6'&)'')680'06)>6>6)1)+>>7>77>80)6')+8+7>997717>79>>>)+)>7177770>)7>)+>0)>)8)06>>766)8)&&')))6+))>)+8>)+88>)+6>)0)6)))')0606&5'0''&0)0&'66>+7'05&5&&'#977+)'6' =%$%%%%$ ""3"""%$$&&/''5'))>))>7>F'5&&%&&& 9::7917+>))'&65'&5''60)66)&6)))>)+)8>1>27776)00>++777277>+17>77)'6+>)>++87776)>>))0)6)0)66)886>6)')''05)+6))00)+>7>17>7+6+)6)>88066)6''65''0''&&'5)'0'>>)6'&0&&%%%+7+'5&8+)5%$%& $=$$%%&&&&&&6')')6>69#& 9FF977)>)8''&''55'&5)0'')8>60)8)'>0)777717,77>'+717)9>+7>7777>+)6>6>+6>+>>>777>+68+>'6606866+'6')6)8)6%8)>)#)86>8>6)77>+ 0%&'66')>66)5)6#'66))0'#')6'>&>6166&& 7)5'>7L()&&%%%%%&"! "%&%$405&#')'66')1+'&'&$ :L997++6680'&5'&&%%#%'66)06)8)6)))>6>+17+77777+)>77>9>'1+97+76>>>+))66)>>8>771777>>'>)6)>60')')>8'6&)6>+>>))4))'/)5'>>>877979+600)60'66'0605)606&5#8'&8%$)))'0'&% %7160>+:9''4''&%%%%"$" "$=$% %&&&&&)5646)61+ & & 9G977>+66>))&&&5#&&&&#''''8'6)066))68>+7>7>>>71+7>+6>>66>97771++>>>>>6>>)))>++7)8+7)0'05))'&)0'6)66666')6+6)0)&60)))6>>>+)>9997>+')6>'66)6''5'56&0'&5&%'&&#&''0 %%=$,+761+>''0&0#%4%$$ "!!"" !3=%&&5&&&&0&&'5))79+%% 9L9718+>>))6'&&'&% &5&&&50''6#)>6))++8>+++78)7+)>>8660)&)>777>77+7>>>>6>++)>++>+>+>7>8&6'))5866'6')68)668))))>+>'66>>6)8))6>97>>>>>+)08)6'0'6&5&4&#&5& &%& &&&&'%$$ >27)>56&& 4%% 4% $=$=% "$$%%&&&%&554ʚ)+9>% 9:F77+8)6'665'&&&&&&& &&&&&05'666)66>>>>>)1>1+>6++77#)7067977>>>+>77,77+66)>>>)>))>>)8>'6''&'66'06'''')8)''0))5)+')66'>'6>)67+++7+)8)866'''5&5/&&&&%& %%%5&'&%%$"N9>)0&%%& $ %44%% !"!=$4$>'$! !"""!$"" %% '&$&&&&0'6#'')609 99F7>>>)6506''&&&%&$4%&4&%&&/''66))'8)))>>>>8>6>717799717F7777++1>1>+7717+>>+)8+6+)66>)>+>'&))0'6)'&'06)6'0)6'))+>+6'6')#''')))06''/))6+6''6'''&&&&/&&&%&%$&4&'&&=& L77)#0&$"$ %&&##%$$ $%&)77'&= =%=%&%%= %5&'/'''66+> FF9976)6'')'004&&%&&4%&&#&&&&#'''6666)8'66>6600+>86>7+>7>77777177+17>>+++777+>)>8>6>88)+8>7>>6)6'&000'6)))))66)68+6)6'5''6')''5)06'''0)8')6'&'&5'&&#'&&&&& &5&&'6& 4&?7)6'&& % &%& &5#$$$ $!%')76'&= %%&&&4#'''#56>1 9F977>6+)0'''&&'4&&&&&&&& &'''56''006)6)>>)6)00>1++>>+777277>1>7>77)6>>1)>+7)77+))+7>+>181>8>++6&)6''0'5)6)0)8'0)666>6>0&0'6))866'''&560&''#%&%%5&08)6''''6'5&'>)75%G7#&'&&4$%% %%$= %&&&%$$ &"$$%&)18>:14"! !""$" %%%%%%&&&%&'6')0'>6 9:71+>>)565'0''5&%&%& &&5&'&&5)/'5&6'66))))6'')>7776777)77>97+1777>>)>6+88+7>87+71)'8>>++>>)>)6+155''')0>)'0)>6'6)>6666+>+'/66)6)6&''&0'&06&%&% $%%&5''00'8)='''61>)960&&&&&%%&&%% $%%&&% $"$%')8>+# $" %%&&4&%44&5)60)6 779111))'0)6'''5&4&% %&&&&5&05'&5'''566)66'85''+>+7)9>769>7777777>+8)>8>>)888>+777,7>++1)678>>8)>>''6'>)66)0))>''))6'06>)>>6'''''665'0)'5''5&&&=$$"%%%%$'0)')6)++))G7>&&&' & $%&=$%%&%&5 $ $!3%')>'6&% $=$=$%%$$$$%%&%%%&&4&&560/' 77:977>'))'6'0'&#&%%4&'&&/'6''6''&&65')866'5&5)8>79>717>7>')>9777++71+7+))8+6))+777>>7>677+>)+))>6)>>8)88)>686')60>''5')66)+>6+6')5'60'666&'#4$=3$"" %%55)0&&)6>R,))05''&&&&%&4$%%%4&8&%= !$$ '$"3"'95175%% "%%$$=$$ %&%&&''0'#& 779>7)60))))6''5''&'&&&''''055'6#&550'>6)>6''66617''6))&6))&>+9777>7>))+>+)>8>1>87>>7>)70>>))+)6>)6+)8+>7+66))>)6>)50)))>)))))'7'60&')6))6'#&&%%%% $%4&&&&&'0+?:7>>8)'''#&&&'&& %%=#0&%%&$ !$""$$ $90"56% $%$=%& $$$%&% %&&%'05&&' 77971>>'660''8'&''&6)5'&&50)&'5#'''5'&686)))'68>866)5)7067986797>>77>>>)0)>+)))>1>>)>8>86>)>68)8>8>)>+>>+177>++1))>))6))6))606)))8>>>'6''''''&%%$"" $$$%%&%%$&5'6@:77771>>)6''%#5&&&%&&55 %"" ""$%&$$ """$="$& %$$$%% $%%&&&'0&0'& 77:9+>888>60660''050''&/'''6'&&'&&&&5'668860'))8+)05&6>78+7+917>77>67>>>)+>>>'>)>)>>>+)668778))>>)>))>86>)>1>97>6>>))>>'8'6')66)0)0>'))65''''#&&&$ $"=$$%%'%&&'6'?:7299777+>6)'&&&&'&56)&%&'&$ "$ &%"$$ $!"$$$%$%% =$%%%%&'&0' 99998>+')6666)&'60))00''''''0'''&&&'')0'#'')8>)')>),787779:97(>71+8>)+>78)0>>)+>8)>>>>60)>>666)++81>8>+>)+>1>))8)+>)6)>66)6>0606>6)>+'')00&&%=$$%"$" "$>'&&6+9:F(G:7:9(9997>+''866>>774&%&'4 &%=4%%$$$$ %$""% $%&% =4&&&4&&&&&'' 77:9>87+>+)6)66>)'6086'''0)''0'645&&%&6''''800506>>>+'%>779799L77977777+>7778>)+>6)+>>)>>>>>>>+>16>1>16+))>61>++>1))6)8>)6'))8)))))>66))))>)#0''&4&%$$"$"=%% &'5:L:LN?::771)8)6666&0&#&&$$&&%&''%#&%&=%%%%%$&& !!$$"$$%"%%%$ &%%&%& &%& &'&&& 6>1)++)>>7)>))>>))5))6)6'6606060&#&&6''6)'0''6#)+)>+1)'>99977799)7777>6)7>77'608>68>6>>))+>>>+>0+>>>1)))>+)>1>>>88)>>'>>))))>7+>6+6)86'>)''))56&&4%%=$$"""""&&'&:G9:9:9>>600'5& %=%$% %$%%%&&6&& &'/&&%%%&$455% $$$%" &"%%&&5 &&&&&&5&%% )++7)>)8)8>8)))>666)6''5#'&'1)6'60')')>>)'68))')))7+7))>77+77777++>>7777+771>')>>)>+)66>>>>1)616>66)8+>8+7++>)>)++86687)))6>++>>6)>66606)666'0)05#&&!$"=$ %&&9977171+#&&&&&$ "%&$%%%4&)6'&5006)''6''6&#'&&= =%''%&$%% $&3=$%"$==$ &%=&&#%$&444%&& )>+17+0686))>0)0)>8)6)0&#)'%$! #'0'')&&)50')/5)'0))6>>88977+)>))'66)>>>>++8>>18>)>6>&+77>>>777+>)8>)>>+>77>>1+>6+66)6)+))6>>868+>)6)6600606)'6'660&% $$= "%$%%&'1>>+7>6''4%5%" &&'&&4=&$&'50)')>60&'))650'/&5&&&4&6&&'5& &#%%%$$$$$$$%"$$""" $$&$$&& =%4&&&$&&%&& >'#))66'666'60)))6&6'0')5%&645)68'6)>60+)668&'66+8)8)>177:777>8>>>++6>>7>>>6>+++))>)17>77)7777)6)>')6>7>177)1>)>>>8>)>)7>68>>)>880>)50)6)666))6)60'&&=&" $%=4&'6))>))'5&%% $%%%'''%&%=&405)>>+>8177>)>)05&&'4#565+)'%&&&0'4%$$ !"""%$=4&%%&% $%$%%&%$%$%$ 76&&6650'&''''660&0&65%" &'&%6)&)6&)6'8>)>'6&'066>)7>>>779917+8+>>>>67+)16)++>+1+)+8>9F:7++++7+8))6++)86+7+687+6866+7)>+>>8))0)868>>'>>))))88))'6'5)$ %$4%%& ')5065)5'& %'>+6>''#&''&56)6>>977922F997F>797>)5&0&>0$6+7)&'7 $""$$" "$$%$&$"%&%%$ %&%$%&$&=%% 7>>6)) 4#&&&'''6'&''=& &'6)66'$&'')0)>)8'05'0'))0))1+>2F+17>>>6))+)>+8))6>>)>)+)6+7,7:L9++++>)>8)))>8>>6+>+8766+17767+++>6>)>7++7))+)>>6>)6>)66&6'&5& %&#&''''))&545'&5 %%'27997+7'6>>6687+7779>>>'88)>>+1+77)%''566'+97>1$5$$!$ "$"$%%%&4'=%'6& =%"&%% 71+)6'666'$$&&'&&# $#''')'580'00'66)&6'06)>56>6'>>>797>>)>)7>>>1++>)>)8>>7>8>+7>972:?N99976)666)>18>+>+7>77++77(97979997977997979+79979+9>71(>>)06'%&&'&565&&&'55&%$$=7977>>86666')&&&&'6''06)+7+8+0&#')'5'%&'5#0'))67F77#=$$$ $=%$&%&''660'''& $%&&& 7>6>>86'&''''% $$"!"$&&&&#'''#))56''&)'')&''0'880)))>)797+>))8>7>>71>+>)>)+8))))>>87977:N:GG??:>6+8>++>>86777(97::GLL:LNL?C?:LL?CLLLLNCL?F99:77))>'66'&&5&&)06&&&6%6%$" 27+60&6&#& %%=$$%$/'6&&)088))0'4%&'/060&508+>8))6>+5$4%"$ &&'&&0'')% "%%%& 71>)6'5&&5%&%&'& !$$%& &&%&4=&/06'5550&0'''5&66''&''))))699)>>>6)>+>711>>>')>866>)>777777727F9L?LL?9+71>>)>+)G:::G:::977217777+792+97179777++>7)))0850'#&5'&660'&&#&&$& %%>76'&&&&&""" ""%$%&/% 5'60)8>>)%$&5&0+555')8''>7779)64" %"%$$$ $!%&&&&5/'%'0' !$4&4 >7>+6&%4&&&%%$&&%&&%%$$&%%&&&5%505&&''55&5')'&54'')'#''5')677)6)>6)87+777+>>)6)6)>>>77777+)+>+>67779999:L97+177>+>+>6+>+>>7>6>>6>)>>>6+6>>86)))66'5'0&66'0)>))>6&&#$% $#& >)''%%& $ $=%"4 5%%&&560))1>6)17+>>7#)6'0''677$%'5$$$ %=$%% 3$%%%&#%%&&#&)671$ 97+>&'5&&'%%%&%''&'5$$"%%%4'&&%'/'&&''#45%06#'&4'685'6'5'6)79>++)>6>>7+7>7>+)'8>>>>>+7797>))>)+67+>+7779779>17>8))0>6)>0#>>86686'>))6>))0'&'06&0&&5/6'0'#6>>6>'65&$%%4 &''8055 %%% $$"$% %&#'0')60066>>)>07'8&&&'56+'%&'5"$$"%%$% %$&%%%&%&&)>%% )')')))&/ &$&$&&%&4&'& "&4&%&&&&'$&&&&&54& && &0&&&50'& '')>991>>6)>>)7>7+>>>>)>+>+)>>7+9+5))06)6>+>+>77>>)6)'6'&')0))5)6''&0))60)8)')8'&#&&#&& = 5##''>)))>8+'&&&&&%&/&6')&'&5%%%%%4% "$=%$%&&&% %&4&'5&&&'/606'68)&$ &5)7')/'#' 5'%55&%%! %&$=%&&%40'&56$& %% 97))65&&&&&&%%&%&&&4%=5&%"&7&%&4& %&&'&5&''''&&'')19+>+))81>>71+>8)0))>6>))817+7)>6>868>>8)>>>86+6'&'66)+)6/66'0)''6)))))'6''&6=$5&&&&5'5%&5& ))7>&'5&5/&& =''6&&&&#%%$%%%%$$" %%4&4 %%%&%45'&#&'5#&''0'>%4&'>>7''006&%'6 &&= "!$=$"$ $ &4&&&&&4$$ '>#&55'&=&%&&&5&5&&5&&'%"$$&%%5% &&&&5& &&%& 5&''&''&&&&&5')7996))>))>>++8>686''0)6'>>>717>)>>68>+>6>>>>68>+66))))8''6'#&'66')'60)'6'5&&=&&&%&5&''&%5&5&'07956&)''&%&&&&&&6'&&%$ $$$$%$=$%&% $$"&%%=&%&&&&''5&&&56>76&5&>+)6)66'54&5%% $&%$%%%$!$"$ $$%%$=&% $%&%&"%% 76>6)8''#&&&&%&%&& &&%&&&=% =%%%&&$%4%%%& &%%4'&&&'5&$& &/6)897>77>+)+>>8)>6000)8')006))77>6>)>8)+>+'))))>)''600)6'6&0%0''&0'66'6))''&)0&'0'#'%'5#%&&5'5'>7&'))#&/%%%)#&%0'5&=$3$$"$%% %$$$% $$%%% %&&&&'#&&&')676&+7966)>6)'&&&&&&&&'$ "%%"$!! $$==%$%$%#%''$''' +7+06)55'&&#&5$&&&&&#&4%% &&4"%% &5&&& 5#&45&&&&% 5&'66>197>)87))))0)6'6)0)6)656')87>+'>)>6>>+&866)665'&&5'''''0)'''650'#')'08&060'60&&&''&&&&&''#&89P''00& && 06'&%&%%%=$$%%$%&&$$ &""=$%$$=$%$%$&%#&&&&%&%'6>7>'777>7+>)680&'&'5&&&&='&$&=% "$&&==%&&&#&'')''0%& 1>8)>6''0'&54&&&&&&%$%%%%&&%&4 &%&4%%& &4&&&& '&&%&'56'0>96)+>>)6'660))')>))>0)''6>1710>0))>))))6'66)6&'6''65''6'5'6')&5&#&'&)80'8'6''50'&&'5'&&&%'>:)&&' $%$6+>'&'%% $&&%&%=$$$ "%=$$%4=$$$$&&= =%&&%&=&𐤥>7+77178)66+>665&'''&&6'5& %%$$$" !"4$%$ %&4&&4'&5' >78')0&&&&0'5&%&&&%$%%$$$%4#&& 4$ "$=%4 &&&4&6''%'&&5&&&6667,6'668)/)50'))>8688)0&)6>>1:)88)066)>'0)00&5&'605&46&6'''5&&#'&&&>'>66'&'6&'5'''''5&6'>R5&=&&%%&7>''&$=%%%&&&% "$%$=%%%$ %$&&&&&&4&&&&>7>>+7>77+7786'5)8))0'06)')>8'4#% %&&4&#&&%$=%= 87>>6'5&&6&'&&&#%4&&="$$$$%&%&&& $%%$&%%$%&5%&&&''&44&&&&&'66>77+>)655)')60)'6660&&&666>977)))>>8)8>6&&&0%%'&&&%'5&4&'5'''%&%&&''07)8)66)&#&0/''0'&&5&5)O% 778>0'%&&&$55& %$ % %$$%$$% %$$%= & &&4&&%&8+66+>8+1>>F77>+>77>+>6>>6>>6&'% =$%&&4%&% >)6+)>>))4&#%& &&5$%$ %$%&=$%%5$ %% &%%&5%&&''&&'54#''56&97>1)0)'6&6/'6''#'&%&5))))879'>6>6'6)6&&&&&&&5& &&%&%%'#5&&&5&#&&ʛ')6&')&&&4&&'&& ='&>)%&% $')>55&5'&5&& %%%%&%&%=% ""%=%$%" $%%4& &'5'#7+1>>11>7)88&))8))00&'0&&&0'6)6&$$$!! $$$&%$% '7>>>>68))65%%&% %%$$=4%%%==&%% &%&"%%%%&&=&&%5&'5''''5&&%#54069>6>666'%&/'50'''0&60068)17F9+6)')0'''65%%%%'5&&$/$&%='&&=&%&&&'5#66>560'''%%=&&%%&5&0&')'%" $&'&&)&00'&4%&& "$$""" $$"$! "4&%4&6'#86>)+>1+77>86)'0)66')066))))+8>+6&%$ $%%=% %=$" '7>)>666)5)6'%$%& %%%=%&&&&&&$=&&&&&%$$%%=&& &46'0'6#'''% 4&'5'+>7>86650&'&&&'6''8668+5)07797))'6''%&&#%$&&%%% "%&%&4&&&%&& 5'5)>6+66&/%55&&&%/''&&060&&% $ &5606&& %=$%%$ """""$$"" $$&%&'60''#)7>17>>)680'55'50'6)0'6))>>20>(&% "$%$%$$&%%& )>71>))55'&&&4&&'%"%%%%%%& =$&%%% % "$%% %&#&'''&#&&4'&&4&5'6>+86)'65'&'&#)0)6566)')>)+7796''06&''5&$'%%%$ $%$$=$$=&%&& &&4&0''0)>6'00'$&&'5&'&'&&%&&& %$$&&55605&&% %%&%%$%"$$ "&%&&&55#')1>927)'''0'''5&0'&5660'>77+9)6&'%% "!3$$$" %& $%& 0>8)0'&'&&%4%%&# =&$% & $%$&%==%&&$!!"$&%%'&'&5&'&&55#%&&&&067>8>66)'5'&')#56)6666606)>7F9)>6&5'6 &&%&"$4=4%% =%$%%&4$&%% %&65''6)>'''&&55'&650540&&&&&%&=&&''6&&%&% "$$$$ "!!$$""$! $%%%4&&&&&675+7>>60>)'505'06#0))>+))7)&8>6%%=$ %&&&%4% &'''&&&&&%%%% %%&%$&&'$= &%&%$% %4&%&4!$ &&&5''/%55 &&#&454&'))+>6+')&4&&'''0'66656)''087997>0)%&5%% "&%%&&%&&'&0'#&5)>&'66&50'&%6&'0'%%%%%$%$$$&%&%& %=$$$ "!"!""$ =&&&&&&&6+80>>))>)'6'''0'6)6+>+7'795&''1'&$ %4%""$&###%'0 '&5#&%&$%&%%&==$%%4$%"&%&=$$$ %=$%$$ %&&4$$%&#&&5054%&&&%&&&&&&0'87)>55#''/%'5''65''#0608>++7:7>6''''&& $ &44= %&&&5=&&''&&/6)& &'0&''&5&5&&&%= &$%%$ %&%==$ ===$%=&&&%&%+6)7)')7)>7'>>6)>>71>1>+7')/$ %'&%$ $"$&&&4586 &4&54&%%&%$=&=$% $%4%&&&%&&$%"%$$$= =$%5&&&&%%&&4&'0'6687)0''0'#&'&656)5668))6)6>7F7>66' /&&%%%& %%&%&%%&5#%'&&5 $&6&66'#)''#/&%& &&&%%=$$%" "$&%%$ "!""$$"" !$!!$! %$$&&%&&&&&:77)6'$%#')67:98+97779>F+>%%%%& ""$"% %8'8)0) %&&%%%$%'5&5&'4&&4&&&&&%%&&%& =%$%$%&%&&&&=$4&&&&&&%$&&&4&&&6&6'678'0'#'5&&'0'60)0))6')67+79++>+6'5&%$%%$$$ %=% =4% %$%=&&&%%&55&6+&'0'04'% %4& & =%$$$% %$%"$ "$%%%5&&4&&&>7:7'84 $$=&&%&67+777>>6>78'&&%& ""%$$ &%''6666' '6>9+>8'66&'&=0 &&%&&&%&%%&&&/&#%%" % &$$%&&%&%%$$& #4&%&&&0#)196/&605&&'')>)56)''8'8>>7,7>)6)''&%%$$$$"$ $$$"%$ %%$&4$ &&% %4&''>>7')5&& &&5&&%"$"""$$ $ %&&&&&47+:7)5?L& 5%&%''60))65&')6%$$$%$$ !$"%4%&&'')6)600' )1>7>0)6&&'&&'5&&54&%$%= %&&&4 $ $%%%% &&%&$"&$%%%%%%5&$%%%&&)5#'906'&'&&&0&'&'&)'&)&'607>+(+)+&& !"$"!$"% %$& 54&%&%&&&&&5)657'06'&'%&&&'%%"$ $%&%&&50)#69+#19'$%6&&&''&&04068&0'& %$"$!"""" %&''66>++0&0&0 '))77>)6&#&6&'&&&#$&&4%"%$ %%%&&&$ % %&%5%4&$$%&&&&&%5 4&/&&%& &$>>6))55'&&'&')'''&6$#5)>>+>7>)'4&$&&%$!"" $"$$&&4% &%#&$%&&50'')86'&'6'&%&%%=%$=" %$$$%%$ %44&&''78%9+67+>%%&0& &%&&&&5&0)'''&%%=" =%!! 06)+>+5&'&&# )))>>++>>6)&&&&&&&& %4$ =&4" %%&%&%#='$%%&&'5 & &% %%=% '09>''6$%5$5)'4&%&5'6'686>>>F)5)&%$%%= &%44&#&55&&5'#&&0>5&55/&' &%=% $%%$=="$$$"!$ ""&%&&#>+#6#2+99&&%&''&#&&&&&&5&'&&5'5&&$$$$%$$$$ %%')+)=&%&&5&$ )>6177>>')))0'&&&%%&%=$$%%%& = %$4& $"&4%&$=$%5'%% &&5&'& &%& &&5'1:)5'0)&&&&&%&&&5''&)&06'>7>)5#&5 "$$=$$%&%%4&%&&A %#'#88#'00'&& $$"%$$" $%$%%%&&>+6077+99&60&5&5%5'&05'&'%0'&#/&&%% %%0>&&%%% )))8>7+>>'6')6'%$%&4&&%%$ &&&4&%/% &&#&= %'&&$=&&&#&= 4&%%&BG>>)6&&&%%=%&&5&&&'''')6+>7)6%&&&$ $%"%%&%&&&$ 65'5&%5&'6+&'0#5#'&&#%& !""$$3 "$!"""" '7'0779++66))00'/&&&45/&&'&'&5&'4%%% "%&&%&%=%%%=$%$ 6)))>1>)6'&'&/4&&&&% %%% %%%%& %5&&5& $&5$ $ $%&$%&5')+>05%'&&44&4&05%&%06&)'66>')0&4&%&&&$$"!! %%% &%&5#0&'&$$%&0'8+'6)'5&&4&=%!" !""!" %%%%9+0$'7767:71+>6)5' &&'#'5'/0%&&&%%$$" $$"$$ "%3!" 006>+6'''&55%&& &&#%%$%$%% %%%%%%$$%&&= "$&&&&&5&'0&%%& $%%%4&$% $&&))0&4&&&4 &&&55&'&&06'&'>6)0&'5%%&%" $"$$$ %%&&&&'''5& &&&&'6>)066) ##& $$$ %$$$$ ""$$=%%%%&2+5$& %$'97'+>>)'&#%&&5'4&%&&&4%%$=""$"$%% $3==%%$$$ '0&56'5#&&&%&%%%&%&%=&&&$=$=%%%$=% %&&&"" !&%&5 &=''&&%$ " "%&$ &%& '>&50&'&&&4'&&&%%'6)&66+)>+'&0&& %%%"" !!""$$ $4%&&&&5&&&$5&&'06067&65)&&&%$%%%=" ""!"""$ =%5'77>/055$& 79977>8>6&&&&5%&45 &%$ &&#&&'&&&% &% =&$%%= "%$&=&$%&% %4$ %&'&"%%4##% &%&%&5& %=&&&&&&>)&&'&&&5&& &&5%&'6&0>)'>9''&&&%%%="$"" $$%%%%& &&%&&4&&&&''6'6>)6'%'&%4%%$%$"$%$ $%%5>+)''%&&5%&997+>)'5'/&6&&4&&%&%&&$&"$$$$$ 4&%&&4%&& &%%%"$$=$=% %%%$$ %$$% %%$% &#" $=%&4&&5'%&54&%%$ =$&%%#&&'>&&&&&#%%% '&&#&&500660'9'0'&&&=%= ""!$$ $$$$&&&#&%&'6/&''66'8>5'''&%%%$ %$"3$ ="5>))'&&'&#'# 77+76#0&&'# %%&/%# &&$%$$ $$$%& &&%%%&#% "$$$% %%"$"$%$% %&4&#&%$$&%&&&4&'&&&$$"$%&%$&" 4'7'&'&%&&&&'&& %#&6&'0'6)7005'$%$ "!!"! $%&% &&#&&)6&06/60666'5)' %$$$%%$$% "$!"=%$$"$$$ $$$"""" %&=%6&&4&%&'0&&/6>++'6'$606&#%&5&&%=&%$%" &%$%%%4%$ $%=$$" $%$"$&%%= %$%&=&%4&% $%4&&%4%%"%%=%% %=%&# &%')6''&&&&'%%&%&$&)%&''''5>)'#&& $"$$$ "3$$&%%&=%&'&&05'60))>0'55=#%=%$%!$="$ "$="%%$%%$"$"$ """$! "$"%%&'/&& % 5&)0'&'7716>+)8)'''8))&%%$%%$ $%%$%%&&$=$$%&%$ $%%$%&%&&%%%"&%= %%%&%%$"%%$= %&'$&&)76'&&&& %4&%&%&&&&6)8)85'%$%$""" "%%%&&&0'&#&5)66'+8>''5&4$$% $=""$$$$$3 &%%$$%%$"$$'' %$5&'% )879))7>)+>>176' % &&$"$$!! "!"""! &%%&$% %%$$$%%$"$=$$$$$% $$%$$$"%$% %%%&%&4&%%$%%&&&&4&& %$=$ %& %=%&'>9''&'&& &&&&&% &%5&'08+6)0=%$$"" =%&5&#&''60>666>)05&&% $$%$$ &&%&= &"%&=% %&$""=&' 05#'&)7))'68>&>>F9+117605'&&&%=$=$$%$" $$!!" $%%%&45#&%%$=%& $$%$ $$%$%$$$" $$$"%"%%$&%%&$&%& % =&%#&'&&5&$"$%$%%5=&$%')+686''&4&&&'%&&% &&%'607))&5&%$"3 $"%$==%%&&#&5'&&5&0>>0>)'6&&&&%4$$ !$!!%%#&%%4&%%&%$&&&'%%%&$0"$ &'#0&)')7?>>)))>1&:&>,77776'&& %$$"$ !"$"$ )8)>44&& $$$$=$==%% &'&&#&5&0/ %&$&$$&0%% '&&&&&&%"" $$&45#"&&&>)'& & &&&&& &%% &'0>>06'#%%$$!$! $$$%$%4&&&&&&5''8)>'>)6)64' $$4%% ""$=% &&&&0&"&)577+6&�)9""$$&&66'>796>+')6/6879&&5&"!%"&""$$$""$&$% %%=%$= ""!!09'" >6>>65&#&#%% %$&$=$$"" $'0/)5'5&'5& &4'%%&&5'&%%&$=%%$"&%& &'>57''&'%&&&4%%&$&%$&6'')>&'&%&$" $"%4#4% &&&&&#)0)>6>'))%& %" $$%$$ %&%5&%6'7LPN+>6>7G? %0800)7)7)>6)0)'6)65+)' &&%"= %$ $="%3" "7N+'" ))&0'&0'#')&&#%5/00&)'')'))'0)5&=&NJ7$#65&%''%" =%&'65##&&5''&4 %%%4&=%5&9>&%'%&4%&=% $&%% %5'66>&% &% %& &$&5')))666''06%&%=% ""$=$%"%$ $%%%4$$$%$=$%&%%&/060'7>:+&5+77!$0)7;7)>)')67>+&'4&&5'8)%'&% %$&&&&=%&%& ""%&$ %$%"%%$"$ 7>'$$" 55&'&0#'&&&&/'%'0&'#'&06''0/0&&& %&%%&5&&&)9>'%'5'$0&&#&''&&6'%'#"$ %&$&'#5)&& &&%&%$$%%%" &&#)'0+5&&%$ "=%%% $$$&&&%%&'6>88')6&)05% =&%&%%%$ %"$=%=%%% '5'&'''65$5''>" )991:>+6)677>)&&& %&&&'5&'&$% 4 & &4%%%%4%"$! %%&%&$$$$%$$ "$$$"""#)%$=" &'455&6''0#5%%&&5''6'0/''''0'&%5'5&&#&&6&&&&&'$>74&''''%)'5&&'&&'&8)6>'1'0'5&&&/&%&&%%&%$$$ "%%&0)6'7&5 !"!!$$$$$$$ %$%%=&4&&#>8)50)&'&'%$%%"$ "3""$""$$&& &"3$$ $$$=%%%&=&&&#&&& %&7""9FF99>+'1))&'#4&& %%&%&)6&% &4%%%45&&&&%$&$% !""$=$ ''&'''0'5'6'4%40&0&55'''0055&)5%&/5&5'%&%%&#&%&%>>5&&% % =&&5�'6+6)>))>666'55'4&&&&%&&&&%&&')+6''&'#&%== $$%%% &&%&&&&6)>>60654%&#%$ !!!$""% %&'$%% $$$"$"$$$%$$"%%%%$$&%&=&) @99>666:>5'' %$ $=&%%%#&>6'55&&&%& &&0%&&% %%$ !$%=!" $%%$>9 #&&)060'''0&'&%44'&&5#&0'))005)6650'&&&&5'% $%&%505&&&&4'0&& &50$)8'0>>>))60#&05&'&&'5& %%'&'676>6&% $%&%&5&'86)>8)0'&&5&=%$$% "&%$%%%"$$$$=$$$""$$"$$$$%=&"%&&%&%%&%'$$N77+'&&&#'%%%=$"%%5&=&&&'7''5&&'%''5%&%=%=%%%$""""$= """"% &4$N7&%$! )&''0)'0'6065&/#"%%&&&4'6)'>')'5'#'06)&)''05&&5'&%5&5&&54& %$'&&&'>'&8 55'&05/0&'06&'555#=%$%56>7''5 %=%&& %)66>+66'&&%'%%$$"3$""! %&"$" $=$=$"$$ $$%&$$&%%6'0'&%)6'& %%%& &&%%"=%%%=%&0676)0&&%5%&"$% %%&% &$%=$" $K)$ " 6'#%'0'&65)'5%'&"$%&&%&)))66>+''6''''')''''''&&&#'&660&'&&55& %&4&&5 &'&5&#&5'0&0&'5&''&=''$6&686)50&%%$" "$"$$$%&&44&#'0'>+0&5& %4$ $"=$%&%%$ %" "$ %!$%"=$$%%= 4$%%%$%%&=508>)'&'4&&$ $$$$%%%$"$ %=&%&%&778)'&5&&&%%$%%%$=% % !%5O65 '))'&5&'')06&#&%%$ %&&6&6')86'')>&'%5''6''65#&0&0&5&&&'650'''0%5&%%&5%'''''0'6&%00''5'%'&66'&'''0+&&&%% $=$$&%&%%%$#%&>686&#&&%$$"$$$$%$&%#5== $"$"$$"%=%% %&&)77>&&6'#% "!"$%"" &&)L'7)>%/&4% %=$$$$%=$%'=% '80&%&&&&6'#4#55& % $%%&'''5' %$4''550&''6'#&&/')%'''&))'00'&0#&&&65'66)'6&60'&566'6806''6'''&'668'4%=%$== $%$=$ &&'0060&&4 %$$==$$&'%=$ $$$!"""" =%&$$$4%&&$6)79)&''&06&"$ $$$$%$$%=55)>$ %5 4&%%$ $%$$ %$$%"% !#:6' 05&'&4&&%&&% % $&==%=&& =%&&&"" $%&')>)'5&''65/& '&&5&>0665/5&5&6&'&#&&&')&))64'/'5)')')''0506')'')&&&% $$$"$$%&% $&$&0''&&''%%$%$% =$"%% ==%$$&=%4$$&&50 667)''50&&+& "$%$%='$=7!" &&&%%&%%%%$$ %%&%$$1)&% )6)&&&&&&&%%%&%&&&&4%$%%&% $4$&'%&06)'')&6 '&00&6+>++'0&&'&''0&6'&'6666)#'')'60)>)6')6)))'6&57&&& "$$"" $%$"$ =&$"" %%&'45=%%%4%& &$$=" "!%%&%%%$&4%&')&'#0>'#6566+>16" $$$$=%$%% 4 &$"% 6& &&4&%&3&%%%%%&$ "$ % $FK:&%%$ &5&&'&&&&%&! $%% $%%$$$%% "$%$$%$4$&/'#)5&&&&'&%86'))>&''05&%5'&'&6>6666'''6006>6>))6)6'>6)'6>&%'$%%%= $"$%$ %$ "%%%%=&%4%''& $$&1'6&"#% $%%"! %#%&&&&& '&&55&8&'&50)67+0'% 3!3$"!"$%$$&%%%="%%%%&&%%%"& %& &=&&% %&&7J9'& '&55''''&&%$$%%&%%%%"$"%%"$% "$$=&% "$$#&4#0'&&&&& 66&)8$6')>#5&&&)'&)))1>>>6'8')6)))>+68''>+))066'& =$%$$"!! %%$=$% 4&&&'&%$%'0'"""" %"'#0&&'#&'&66''/5&66>7>)0& !""!"""%3 "%%"$ &=%&#'&4%$%%%% &=%&! !$$5R76% '&&5=&&5& $$%$$&%$" $$$ =$%=&&"&&&&%%&60)6&''4&%&&#&&''#')&&&&&0$&>)6>68'>00&'66>>>6)66))0>'>87+77' $$%$&&$ %$"%&'&%$$$ "&"=$#&&#= $'5#45&0')506'=6>+1&&)64 $$$"!""" $%)&'%%%%#&'&& "" 9N)%$%=$%$$"!! '&&& $%! $%&&%$%% =$&$%5&&'&&&'''55&'%0'&&&'#5'0''&&/%&%>'/>#$6&#'&%'/0>)>)>>6>)+>)8)>71718'&$ !"""! "%=%= %&$$$ $$&&$=%$$" %%%"$ &&$&%%&&&&&5''0''6))>6>>'=&6'=$ %%%3"%4$%&'& &% %#&&%4 $$):'&&%%%%$ &5&&&% $%%%%$$ &=$$$ $%%%4%'&#& #&%&&5'&'#&&6)66&)'0'&''%&%&&&&5&'50&'''5'&''8)>>+66>>>>)0)>>817779777>50%$&%%$$ =6'$$ "$$"%&&)+ !!""! !$%$=& %&%=$ &4&&&&&'&0>)86>7>>>')#="! """$"$"" %%%$"$"$$=''&=&'&&4&&#=%&$%=$$$%4$:7)5& 44%&="=% %$$%$%%$%%&%% $$$"&==$%$$$= 44&&4'&&&&&&#))>'6'')0''&&&&'&5 '''&''6'#&''0'&)'>>)>6+>+))6716%%466779977766>>&$$! )$$$%$ "%>9+% %%$4&=$&%&%&&5'66>))71'6)7&%" "$"!!$$$"3! $"%%%$"$"$$ %)&&&&' 44&&4'&%$ &&$ %$5 ''5%%%%%%=&% 4& %4 %"$$"%$&%$ ="%&&%%4&%&&50/# 0)+'''''6')666''0&05'&'6066&0'')%'5'0/66&06>)))6>0)))90&$& %4'667799(798'&$ %)%$$ =&&'>% $$$%$==$%$&%%&&%&5%''''>)))771')>0&%%$!" %%%=)'�'%%&5%&5%%%&%%&=%%8'&%&%%$= %&'%$ &&%$$$% %&%$$%%$" $$$$"$4$=%==$=% %%%#%&%%4&&&'&&&&6)))'6&'6)0'6'&5&5&')))')'660##&''000)006))>))))17)>' = &/&'+70&'667977)5 ) %791$ !$4$$%=$%$%$ $$%%'&5&060>979>+)+&$=%%%$ !"""$ $$%$==%&655&&#&&#%%= %"%=%&$0))#=%&$$ $$=$$%$$!" "" $&%%%=%% $=$$$$ $%$"=$$ % &%&&&&&=" %'6>>6'''6'&''0'&605)6#06686)6'0''066))60)00>''5%&'076&%$%$&#'55'5&&&%&77>>78>%$"$41>>'%% !!3$$$ $ %%%&% =%&&'5&668>7197>1>55%3$$$$ '')'0&0%&&5$ $ 4%%#$)'&%%%$%"" "$%=&"$" "$=%%$$$%%$$ =$%$$%$$ %%%%%$%%4 %&&=&&&$ %&6>7>>&)6)'))'0''60'6)''#8'80'''6))>))6)6))&6>86'&&)7>%=$$5&&'&'&&&'&#'&&&67+8+7$!!"$&&%"" "$$$$%& $%&%%%%&& %&'66>>7>777>5%&$$$" !$!3=$=$$%$=$%%" %)56&5&5&5%%$%="%=%4''5&&%$&$"$$$ $$$$%" "$$!% $$$""%$%$ %"%$" $=%"%$%4&% %%$$ ''6>17>7''%'5'''0&6'''0)'0&0''''6'))8))66)>65)+')'&''&9%$ $5'&&'''&5'06#'44%$$&++) $$&%$$ %$%&&&'&)))7)77977# $ %$3$$=$$$%&&'66''&&&%%%&$$% 4/4&&%% =&$& $%%%=" $$%"$$" $!$"$$ "$= %&=$$$$%=%$=%%%&'66+7+667&&'''4>)606')''5&)6''6)'606)6+)8)'68)'+)66''67)& !&665'/'&&&')55'&6"%&%&'>%$$%'$ &&&5&'')>777799>&&& ""%$%%%=" $$$$"=%%))00#'&&$%&$%&%&&'5%&& %&$&&=$ &%%==%%%%$$=%%$= $$$$= $$$"$ %%%$$$$%"%%%%$$&& ))'7>&0+>9'56')>)6+6'0)''6$'/50'')6>)6>>>>>)18>>6++)'876'56)))''5#'')'/')6&$&'&=4 &&$%&%%'0 $%4&"$$%$%%$ &&''')>>>77,>0&$$% "$$$$$%%"$%$$$ $%$%$$$$$'&%&#)&%%%%%"&'&&&'&%%$&%%$ $=$!" %$$%%=$!"%%%==$%%$$ $"""%$%$%$$% $"%% &%=$&&&>5++'6661799'>7>)+>)'&'06'555'&&)>6>>8)%>>)>)>6)1>+)>716'))1+')&'6605505')%&& &54&#&%"%$%'&&&! $""!$ !!!"" &%$$$4$%&'''>8+>)>+6& %3" $""$$" $%&&')7&%&&% &&'&&&% &&&$" %""$%% %$$&%&$$"!!"=$$$%$%$!%&%$"$$% "%&&5#'6)''6088>>979>8>87>66))6)&'&'))))88>+17867)7)68)>7)>)>9717>16006'01'&')&6)&&&%&/% &&=%4&%%& &5)$ !!"$"$"$%%== = 4&&''5''>+>>+&4%%"" $$%"=$$$" %$&%$$# %$%'&&%"= /507(& &%&&#''&4%%&%'&%="% $! =%$"" $$=%$%=$$%% %""$%&&6''0&50 67+>777F>1>7)8)6)60'6)66+7+6+>)0)>7)+>>))6)+66)>99>27>+)))')'6''6''5&&$=4%%&%&% &5&&&&5#&8$% %=&%$$&%5#<)>+1765&% %$%$%%=$%"$%%&&55$"%&'99%&&&%%&6&#&&$ %%=%% !$$""$$$$=%%=%% $$$$"$$$$" &%&50)0&&'060&>+77+F:7777))166)''0'5>1+8)>77+778>>>)1+)6)6)77@>917))''68'5)'5'5'% %&&%$%%$% =&&4&&&&&)''6 %%%==% $&&%='&'&0'>)8+)&4%$%$$""! %&%&$"$"%$%"$==&&&&%%5,96 &&&&&5'&'&&& =%4&%%=""$"!$!"$ ""$!" %$=% $$$$$%$$%$$%$$$ %"$$%=%4&&'5&#'''651)+>7>77?9717>6+>'0668+76>771>>1)68>8)>7+8)))+9+7>8>&)+)50#)$&6'&&%& &&&%$$$$%$&%&&5'&&0,'&66% $!!$"3= =%&&&#&'2797&5&%=$$%$" "!"!$%$ $%%%%$ %=%%&$="$&&'''7)&8&&&&%''&&&5%%$455% $$$"$$%" $""!" $$$%$ $%"$%$$ $$%"$$$$%$"$%%$$$ %&&05'5 ')')>>8)7>777>F9667>7+)')1>77>>771+>+86)>>+>>#')6>+69(>>8'')0'&'6660 &&%&%%&%$%4% %$%%%%&&&''>10&)0) !"""$&%& &%%&%%'%%'5&>996'& '=$ "%$$=$$ &&$',91))5%&&/%&&%%""" %% 5% $"$$$ =$$$$ $$"!$$$ $""$$"$"$ %44 &&/%#%'5'0)6)+)++7>067G9)+7>>>7'>77+7>7>66))68>7'6)'6'8>+17996))05')''5)>''%=$/$%% &&4=#''&7=#0'#0'%$$ !""%&&%&5%#%0/&%%#+2>> %&$$$ 4&$%$$$%%==% 5&&+)517+5&&&5%&&&&$%%&4%$&&5%$ $$$$$$" 5&&$$$%$ $%"$$ %""$$==$%%$$$"% $$%$&%%&&&%'&&&#''0)0)6>>6'677:?'617+++7717777))')16+7:56680'>>)>77F()8)66'0'&5'''%&% &= $%$$&%% %5&&5&&'''''50&6'&&''&%"!$!$ &4$=&&% &4& %'77766'#>& $$%%& % #%&$$ "$"=&%'':9&'&>6&5&&&#%$%$"&#&'&&6''% "%!$$ """"" %$$%"%%%% $%$$4$=%$="$$%%!&%$="$" %%%%%&&&5&'&&''&0'60)0)6>5++7??&7177>777787+)''60%65&6>60'08)>>7797>+)))06'&&''&&% %$=$$ %$&%&5%'&'6&>&&'06&&&%5&650 ""$$%$%&%$%&& &&)77>>>186%% "$$$$"$ % %&4%& %$$$&"%&&56G9'&5&&'''&&4%&" '&0&&%'')0'$% """"$ %'&&& $%$%==4=$ ""$%$ %%$$$$ %==&%%%%&%''% %5&'555'0&)))686+)99?199(7916>+)&0'6>&&%0)))')6>+>>77)7,9)))'0'&'''&&&&%%"$$$$!$ #&%4&'&'>5'&''&4&&'0'66$ %&#%#''>71>677776%$%= "%%%%& 5%&%&%% $"$%"$$&%$067&%&='6&>%'&&4$$%%%&$ !$%%% &&''&&$& %=$%$""" $$""$%"%""%%$!""$ "&%=%%=% '%=% /%&&&& 060#''0)>+86+777:9971>86660')686)06))'6>68)>6>77>779>>))'''&&&=4&&% %"$$$$ %%=$=&&4&&569'&06'&&&'0')')'& "$3%$$ !$%%##)0079+667)&%$=%%3&=%%%&&'&55&&5%%%%%$$"= $%&>'&&$#)& '5&&&==" %$$"$$ "4%%$! 50'') %=%%%$%$$$"" $$$"$==% "!$"! $$4%%&&&&%&&5''&'54# &5#')>>0'#6)>'79FOH77>27>7>>6)066)>6))6)))>>+7779971+>)&&>%4&%$%$% $%&"&&5&> #'5''5&0'0>))686&7>> &4)8+7))6'%&%$ $%=$="&#%&&&'&6&%4= %$$$%$$% $"=$74%$)7%&%%% "!$!"$!" '6)/54&$$ $""$" $"$$%$%$$$"""!$ %"%%&'&=&%%&&&&&5&&#&&#'0'>)+&)&''>)67:LCF99717>77+))''806'>)))617>97>99+)++&66'%$$%$%%$" =$=%"$=%%%#&0'')'&)5/&6)0'>'6)6)'6&>860'6'" 4%')>+70)6&'/%% =$$%'&'%&%4%'/%4& &&%$$$"%" "7&&%#=5&&& %&"$=$$$3 06))&#&= $$$$$ """""" %&&&$%4 =#&&&4&'&''44')60&00&'0''072F9?::79)++7>5''6066>)7))>+777+79G76>8>)5 $%=$" """=$"" % '4'8#>&&'5)&'68)6>6)>6'0&6))'6%&05& &8787)))&&>&%& &&%60&&'&''%'&%&%&4 %%&& ' "59%%%%&&&% $$"$$ ""!%==%%$"$ )8066#%&&$=="%"$ %$%"" 3"%$$"" %$$%&%&&4'&&&0#&&5&&666)>&>'60>8087>799:L99,77>0))>8)>)>>)6+777,1(779+>+7'&% "$"$""""%!!" ""$"$ =%%&5&00675&'5)'&&'6>)6>)))>'61+'&4)'66&5&&)1)7>&4 %$%%&=44&''&&#&& =&&&&%4&&$ %>#$ &##&= &5&&=%%&&5&$$$$ " $%= ""$""!"$" ))&'84&'&% $$=$%%$"$ $%$$5&& 4&/&&/#5&'60&'&)'>6''50'))>>)+7+>9779971>)>)6''>))+>6>>++777977>7990=$ %=&$%&'&''>)%'''&#%'60+8>6))>>>775'56>'>0>&))+8)'$ 4&&%&5'566)# %=&%'&''8% "%&%&5%%%60%=%&&&'% 5#'%%%%"$ $$$$$"! "!"%%%% $$!"! 0#0))%5#&%$" $$""" "=%"$"%%#4&&&4=''&5&'&&&%)6)'5)'0'6'86>861>777799971>6))''))+)78>77+779:99?F5%%=$""$" &%&&&#&5&954&)&'5')06>0>))>+777)566887)6)++)=$ $=&4&&'6&50>5&&&&&&##&8'0 '&&$%% 4 4&$$%6&6&&%5')00$$$ !"=%%% #'05'&%&&=%$$= ""$%$$%$ $$$$%"%% $$$&%'&5&#&''55&&&&%6)&)''066)66>>1+>>++79177978+))16>6668+81+19977:L?:'%=$%$$"3$" ""$$%"=&&&5%'':'&&00&'850)0)60))1>+>>))7)>7+7)>)67) "$$%&&6865'>0&5##&0>66 5'&06#&&$&"$&'&&$&&''%&&%&'6&%%= $&%%$$ %'&&/5 %&=$ % %=$%$$$ =$"$4%%&%%'&&'&5'&=$&&'60)%0&0''>>6+))66)>>7+297797777)>0+568>>)>+2797979N90'% $"$$"$ $3$$%%%&&%/)56F5&'660)'68>')))''')+66+60>,79)6>>10/7" %&&&'806)&')0))6#5%6)#&&$ 5&&'& #$%4&&#$%%''''&%%$$% &&=$%%% %$%$$ &=&&&&&%=&&%)> $%$$$ $%$%"$"$=!%$$ $&&5&& 5'&'4%%$$ &&'&6406866+')>6)>6))6>++77,977771+>>)+66666+1927777:7966%4%%$ !$!$! &&&''71)'&66/&')0>)>+6)))6)>7>>7>705))6)08=" $%%6>'#0')''6&$)86)'6&'&&%$7%%&8))&%&%&&4&&%40&'0'&&&=%"$!3$ $4%&%$%&%%%$$$ 5>&&0%$% "'>5$=%%$ $$$$%%& %=$$4&#&&&&&&&&&'%%4&'#56646)0'6''>)6++>)8++)1>+>7(7777>>7+>+>)81+797797777+>6''%=%= %"$$$= %%&=&&''6+(5#0)&'6)8)++>)))>>672777975+)>9>''#" %$%#&))8)>#'>50%&&>06&&&&" 0>&=&5+'&& 5&%%&&4555&%&%5% "$"$$" =$'&%%%&&$=% %&0''6''4""=#'))=&$%$"!$"!"3 $$%&$$ %$$=$ &5&/&/'%% 4&#'5''0))%%6)66)6))67)8)666))8>>7>1+7+77>8++++>791++777791777106'5$$ "=$$ "$$=%$&'&/0&&607''665%66)+)67>>>+7777)96=/&0>7+)'%%&$$%&&5))>>0)+>77>1>#'>>>) !&9%%"%$%>50$&$%%&&&%& &)&%&4$=%%$ %>#4'&&&&"&$%%=" '#>5&65#&! "&56)'&%$$$ %%%&$"%"%%$% %#%&#&&&% &5)'6')0)'6'0)56)>)5'0'68)>>+))7)7+>+>771+>'771)7+7+77777+8997+&6%&%$ """%=$=%%&&&''#)5'+8'60&'660)>+6)87>1717770&&0'77+85&&&'# %56'6)))6)87778:76+1>'53!%>)=%&#&$%>+&$3%%% &%%'60& )&&%&&%&&&$ $$$$"$$$%" &'&5'''/&06$4&%6&%%&$$ 3=""! $%$%$%$ $$4&%% $&5&%%&'5''6'6)'5)')666>''''5'')>>1+>)))8>871>179)+)+78)>+7799>77777776'0&$$ "$!%$"" %%&%&5'>'5)6)7'#'')06))78777>+77+>61'&5''+)776'506'&''6>+7)8))>777L777>7&%'''$7'0&&$%=&6>'%%$$$%&4$4&8#&4&$% $""$6'&&#'% "&%%==$$$%$$ +77>>5'0''04'%&%%&%$3$$" "$%4$"%%$$ &%%$='&&%&00&)''6)'0)6)8&)')60'065'6>>7>>)&)>)>>87>>79791+7)777717777+++7>+>>5& $%$$$%&5&0''+)>9F065)))658+>17>+1>7+>70'0'+>+77>)0)))+)>>1917>6+7?F9777+)%&%4)661'=#""%%%&7+)%$" &$&&80&&&%%$%$ !3"$%$$%6''&6#&4&$$%%%&%&4"$$ >77>+'>>)6)6)''#== &% %$4%$$ &&4& &&''&5&&'''0&06)')6''6'')'')>'))>>5'>7)>>>8>>)))77F>+1>7711>+>+)>>7>>6'& $=$$=%%% ')6)+>7?(>'8)0''>>)1>7771+77150')+7)71>>67>>79777176))8+79971+)))&&4&7+0&&4&%&&%0>9#$% "$$$$&06%&%=$% $$=$$$"%'''&&=%"4=%&&%=$$$$ Background nomark Contents Nothing Disable wrap right Disable wrap left Wrap Right Wrap Lef Right noscrollup noscrolldown wwwwwwwwwwwwww wwwwwwwwwwwwww wwwwp xxxpx wwwwwpp wwwwwwp pwwwwwwp wwwwwwp DDDDD@ DDDDD@ DDDDD@ xxxxxxxp xxxxx ppppp wwwwwwwp wwwwwwwp xxxxxxxp ppppp wwwwwp xxxxp wwwwx wwwwwwwx wwwwwwwx wwwwwwwx wwwwwwwx wwwwwwwx wwwxww wwwwwwwx wwwwwwwx wwwwwwwx wwwwwwwx wwwwwwwx wwwwwwwx wwwwwwwx wwwwx wwwwwx wwwwwx wwwwwx wwwwwx wwwwwwwwww ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` ffffffff` fffffo fffffff` fffffff` fffffo fffffo fffffff` fffffff` xxxxxp xxxxxp wwwwwp wwwwwp pppppp pppppp ppppp wwwwww wwwwww xxxxxx xxxxp wwwwwp ppppp xxxxp wwwwwp wwwwwwp wwwwwww wwwwwww wwwwwwwp wwwwwwwww wwwwwwwwwwwwwwp wwwwwwwwwwwww wwwwwwwwwwwwp wwwwwwwwwww wwwwwwwwwwp wwwwwwwww wwwwwwwwp wwwwwww wwwwwwp wwwww wwwwp ppppp wwwwwp xxxxp wwwwp wwwww wwwwwwp wwwwwww wwwwwwwwp wwwwwwwww wwwwwwwwwwp wwwwwwwwwww wwwwwwwwwwwwp wwwwwwwwwwwww wwwwwwwwwwwwwwp wwwwwwwww wwwwwwwp wwwwwww wwwwwww wwwwwwp wwwwwp xxxxp &File &Open... Ctrl+O &Save Ctrl+S Save &As... saveas Print Set&up... printsetup &Print Pages... Ctrl+P printpages &Run... E&xit Alt+F4 &Edit Cu&t Ctrl+X &Copy Ctrl+C &Paste Ctrl+V paste C&lear Del clear &Size to Page F11 sizetopage F&ind... F5 Re&place... replace &Post It Ctrl+Shift+P Postit Opens a post it note. &Notepad Ctrl+N notepad This will show the Notes Pad. &Change Tutorial ChangeTutorial Asks you which tutorial you would like to use. Aut&hor F3 author &View &Tutorial ToolBar Ctrl+T Open the Tutorial ToolBar &Popup Help popuphelp &Page &Next Alt+Right &Previous Alt+Left previous &First Alt+Up first &Last Alt+Down &Back Shift+F2 &Add Book Mark Ctrl+M BookMark &Go to Book Mark Ctrl+R &History... Ctrl+F2 history &Help &Contents F1 contents Status &Bar F12 statusbar r,J,J, selectFile setCurrentDirectory drive jupdateFileInfo zeupdateDirectoryInfo uncheckLinks setCurrentDrive selectChange )getDriveList uncheckLinks enterDropdown uncheckLinks updateFileInfo tb40dos.dll getCurrentDrive setCurrentDirectory setCurrentDrive getDriveList checkLinks tb40dos.dll uncheckLinks selectFile updateDirectoryInfo vgetCurrentDirectory getCurrentDrive selectFile setCurrentDirectory drive jupdateFileInfo zeupdateDirectoryInfo uncheckLinks buttonDoubleClick getDirectoryOnlyList uncheckLinks updateDirectoryInfo tb40dos.dll getCurrentDirectory getCurrentDrive setCurrentDirectory getDirectoryOnlyList checkLinks tb40dos.dll uncheckLinks selectFile updateFileInfo KERNEL GlobalAlloc GlobalFree GlobalHandle GlobalLock GlobalUnlock linkMemFunctions GlobalAlloc GlobalLock getWinPointer GlobalUnlock GlobalFree GlobalHandle freeWinPointer ,&H.& freeWinPointer $bgetWinPointer linkmemFunctions The total is buttonClick <+V!8 popHelp popupHelp false TutorialtoolBar initialize statusControls enterApplication LockWindowUpdate ,$T92O getDesktopWindow flashWindow ,#T**O GetTickCount GlobalAlloc tbk_GlobalAlloc GlobalLock tbk_GlobalLock GlobalUnlock tbk_GlobalUnlock GlobalFree tbk_GlobalFree GlobalHandle tbk_GlobalHandle screenFromPage clientFromPage ScreenFromClient xUnitsFromPixels yUnitsFromPixels tb40win.dll kernel getIniVar setIniVar popMenu popText initialize sizetoPage reader BookMark tmplttool AddBookMark Add Book Mark Remove Book Mark enterMenu Tmplttool TutorialtoolBar PupdateDisplay TutorialtoolBar Postit2 Postit4 Postit1 postit2 postit1 Postit3 postit4 postit3 Sorry only four post notes per page postit 1, "@ w, "X ,&H.& 1, #> 1, #> 1, #> Cancel tmplttool Change Remove answer Would you like to remove the book mark or change the title for this page? AddBookMark nomark bookmarks Please enter the reference information for the book mark bookMarks bookmarks refInfo Book Marks in this book have become corrupted. They are being removed BookMark w, "X ,&H.& V, #> .', " removeBookMark tmplttool !MpopMenu bookmarks gotoBookMark TutorialList ChangeTutorial Notepad Notepad popHelp false popupHelp popupHelp updateDisplay reader popHelpText statusText s_TargetWindow popHelp showText statusBar mouseEnter lscreenFromPage popHelp pophelpText PopHelp popText s_targetWindow pophelp PupDateDisplay showText PopText showText popText mouseLeave .'+ +F PupdateDisplay enterPage leavePage reader e+lockedInPlace moved 5(gettickCount 5(getTickCount littlePause .', " Ytbk_GlobalLock Failed allocating memory. memFlag retval tbk_GlobalAlloc tbk_getWinPointer tbk_GlobalUnlock tbk_GlobalHandle Ttbk_GlobalFree tbk_freeWinPointer popupText [[popText {popTitle buttonClick selectChange newDrive checkLinks = TRUE drive = setCurrentDrive( setCurrentDirectory( ;&":") updateDirectoryInfo Y&":.\" updateFileInfo s&":.\" selectFile &":.\" = FALSE uncheckLinks enterDropdown odropDownItems getDriveList() notifyBefore ZSTRING fileList linkDLL systoolBookDirectory & "tb40dos.dll" bgetCurrentDrive() INT unlinkDLL try & " notifyAfter --stub prevent & handlers message exist pathAndFile checkLinks drive = getCurrentDrive() setCurrentDirectory( .&":.\"& path = getCurrentDirectory( updateFileInfo l&":.\" selectFile &":.\" updateDirectoryInfo &":.\" oselectedTextlines qrefCount DLLs requires leaving clean uncheckLinks notifyBefore ZSTRING fileList = getDirectoryOnlyList( &"*", "N") B = "."&CRLF&".." linkDLL systoolBookDirectory & "tb40dos.dll" INT unlinkDLL pry & " notifyAfter --stub prevent no notifyhandlers message exist pathAndFile keep causing ES --{Using Windows pointers} -- the link statements needed functions below linkMemFunctions linkDLL "KERNEL" WORD GlobalAlloc( ,DWORD) Free( 'Handle( POINTER GlobalLock( NUnlock( getWinPointer nSize ghMem ZretValue freeWinPointer pMem O = GlobalHandle( c = GlobalUnlock( GlobalFree( buttonClick ZlpMem,temp --Call handler memory allocation linkmemFunctions toolBook allocate --some Allocate enough hold 5 integers. --Since 2 we O10 bytes. (200) --since each rea grows -- 2 zwe store. --Set so on. .(I*2,lpmem) "The total --Intilization handlers the startup up enterApplication 4popHelp popupHelp initialize TutorialtoolBar statusControls autoSize maximumSize `= 640,480 sysPageUnitsPerPixel < 15 sizetoPage Added 5/13 Rob |= TRUE sysReaderRightClick = systoolBookDirectory&"tb40win.dll" STRING getIniVar( setIniVar(String, INT popMenu(WORD, Text( ~screenFromPage( clientFromPage( ScreenFromClient( xUnitsFromPixels( yUnitsFromPixels( linkdLL "user" LockWindowUpdate( getDesktopWindow() flashWindow( DWORD GetTickCount() linkDLL kernel (tbk_GlobalAlloc = POINTER tbk_GlobalLock = tbk_GlobalUnlock = tbk_GlobalFree = tbk_GlobalHandle = path 8<> "\" autosize --Handlers Items enterMenu menuName, menuAlias normalGraphic B"AddBookMark" "tmplttool"= icon "mark" setMenuItemName(" 9, "Remove menuItemChecked( cView close updateDisplay "Tmplttool" postit J"Postit1" = "" "postit1" /= 1440,1440 J"Postit2" = "" "postit2" /= 1540,1540 J"Postit3" = "" "postit3" /= 1640,1640 J"Postit4" = "" "postit4" /= 1740,1740 Request "Sorry only four notes per bookMarks _Would you like change title "Change" "Cancel" answer = (bookmarks foundRef = i ("Please reference information refInfo "" 8&","& nomark" 8have become corrupted. They are being removed" &","& JTextLine &","& gotoBookMark Zlv_menuItems, lv_position lv_Position B"removeBookMark" )&","& / 2) lv_MenuItems = popText("","There windowHandle J",pageScroll ChangeTutorial xisOpen "TutorialList" %modal Notepad --Other --Traps The message so no error Occurs there Status bar control pophelp. 4s_TargetWindow 4logical ZoldCursor statusBar = " statusText popHelpText s_targetWindow = showText "PopHelp" pophelpText %notActive upDateDisplay parentWindow xPos = ( >/2)) yPos = ( "PopText"= b&","& Viewer " --Updated JButtons. J" = --Keep Haccident lockedInPlace --This creates a friendly useful making automatic sequences. littlePause ZstartTime = getTickCount() cgettickCount() - 0 < 400 mmYield -- returns a nSize tbk_getWinPointer memFlag = 66 ZretValue "Failed allocating memory." retval = -- unlocks frees supplied. tbk_freeWinPointer pMem -- extract low order Hmasking f0x0000FFFF bitAnd 0 's up assigned buttonClick popupText ><> NULL popTitle >, mousePosition )'6'0)56)>)5'0'68)>>+))7)7+>+>771+>'771)7+ optimize scroll up scroll down set scroll content text buttonClick buttonStillDown content text enterPage content text reader buttonClick J"content " <> 0 " - 1 enabled B"down" textUnderFlow " = 0 notifyBefore " = 0 " = 0 content text buttonClick buttonStillDown content text enterPage content text reader buttonClick textOverFlow J"content " = 0 enabled " + 1 B"up" notifyAfter " = 0 " = 0 leavePage reader notifyAfter ) = 0 notifyBefore ) = 0 info_LastSavedBy :HDMEDIAPATH Arial Arial D:\MTB40\TIPS\WIP\ Arial System mes New Roman mes New Roman mes New Roman Times New Roman Arial Arial Times New Roman D:\SAMPAPPS\ Arial D:\SAMPAPPS\ARNOLD\ mes New Roman Times New Roman Arial D:\SAMPAPPS\D D:\SAMPAPPS\D * , . 0 2 4 Arial autoSaveAutomatic info_LastSaved 5/23/95 9:23:39 PM System Arial Arial Arial Arial D:\SAMPAPPS\ purpose bookmarks BridieS Arial F v . D:\SAMPAPPS\ MTBWidgets content text MS Sans Serif @80*x< urier mes New Roman olBook Design page 1 Example The Right Way Page "badPage" poptext Page "popHelp" Notepad Note Pad Page "Notepad" TutorialList Select Tutorial To View Page "TutorialList" Page "TmpltTool" sabled sabled sabled sabled sabled sabled sabled sabled sabled sabled sabled sabled sabled sabled sabled sabled sabled Extending ToolBook ButtonDoubleClick ButtonDoubleClick isOpen Viewer "Tool" tile captionBar defaulttype V = "child" = thin = popup sabled ButtonDoubleClick ButtonDoubleClick isOpen Viewer " tile J" = J" = captionBar J" = defaulttype J" = "child" J" = J" = thin J" = popup 10,14 selectChars 1728,-22624 Postit4 1640,-22712 Postit3 1440,29190 Postit1 1540,-22812 Postit2 ASYM_BeenHere title Extending ToolBook with DLLs and the Windows API selfRef enterpage notifyBefore selfRef Learn how to take advantage of some of the more advanced features ToolBook has to offer. The books in the Tips from the pros section are designed for users who have completed the ToolBook Tutorial and have a basic knowledge of ToolBook.. enterpage 1728,-22768 950509195345385869048971625 ASYM_TpID Extending ToolBook title Postit4 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit4 buttonclick ButtonStillDown oPosition buttonclick J"Postit4" 585,90 offset Postit4 3postit4 3Postit4 EnterPage 3Postit4 leavePage keyUp notifyBefore EnterPage textoverFlow postit4 = Postit4 textUnderFlow Forward Postit3 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit3 buttonclick ButtonStillDown oPosition buttonclick J"Postit3" 520,55 offset Postit3 %3Postit3 %3postit3 EnterPage &3Postit3 leavePage keyUp notifyBefore EnterPage textoverFlow postit3 = Postit3 textUnderFlow Postit2 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit2 buttonclick ButtonStillDown oPosition buttonclick J"Postit2" 800,140 offset Postit2 2postit2 2Postit2 EnterPage 2Postit2 leavePage keyUp notifyBefore EnterPage textoverFlow postit2 = Postit2 textUnderFlow Postit1 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit1 buttonclick ButtonStillDown oPosition buttonclick J"Postit1" 915,105 offset Postit1 ]2Postit1 ]2postit1 EnterPage ^2Postit1 leavePage keyUp notifyBefore EnterPage textoverFlow postit1 = Postit1 textUnderFlow notes EnterPage notes UpdateDisplay notifyAfter EnterPage MainWindow notes enabled notifyBefore UpdateDisplay EnterPage leavePage UpdateDisplay EnterPage Table of Contents .'+ +F Hotword buttonClick buttonClick 1728,19712 Postit4 Postit3 1540,19668 Postit1 1640,19768 Postit2 ASYM_BeenHere Table of contents title Section List What are DLLs? When do you use DLLs? What does it mean to link a DLL? use DLLs Section List ToolBook system DLLs Add-on DLLsk Section List LinkDLL control structure Aliasing DLL functions Unlinking DLLs Windows v. OpenScript data types Reference v. value Pointer referencing Common problemsssss Section List Getting Started Section List What DLLs Does ToolBook Use? Section List Using DLLs in ToolBookkkkkkkkkk Section List Definition Using the Windows API Using pointers to structuresssss and structures Section List What is the Windows API Section List Using translateWindowMessage Section List What is it for? Things to watch for 1440,-10246 1728,19856 What are DLLs? What are DLLs? title 4380,3936 Postit4 4380,4080 Postit2 1540,3700 Postit3 1640,3800 Postit1 Windows' main component is an advanced dynamic link library (DLL) system. DLL files are compiled executable code that can be linked to an application at runtime. A DLL provides a set of functions to a program by exporting them to other programs. ToolBook and other Windows applications can link to these DLLs to add functionality they do not have. One advantage of DLLs is that if a program isn't using the DLL, Windows can discard it and free up the memory used by the DLL for other purposes. When the program needs the DLL again, Windows reloads it. it.ds the DLL again, Windows reloads it.............. = DLLibrary DLLs added from OpenScript. ToolBooks DLLs for the system. The System The Book 1440,3840 95050919535738599103127501459 ASYM_TpID Getting Started title content text Postit1 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit1 buttonclick ButtonStillDown oPosition buttonclick J"Postit1" 480,90 offset Postit1 ]2Postit1 ]2postit1 EnterPage ^2Postit1 leavePage keyUp notifyBefore EnterPage textoverFlow postit1 = Postit1 textUnderFlow Postit2 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit2 buttonclick ButtonStillDown oPosition buttonclick J"Postit2" 935,110 offset Postit2 2postit2 2Postit2 EnterPage 2Postit2 leavePage keyUp notifyBefore EnterPage textoverFlow postit2 = Postit2 textUnderFlow Postit3 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit3 buttonclick ButtonStillDown oPosition buttonclick J"Postit3" 745,40 offset Postit3 %3Postit3 %3postit3 EnterPage &3Postit3 leavePage keyUp notifyBefore EnterPage textoverFlow postit3 = Postit3 textUnderFlow Postit4 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit4 buttonclick ButtonStillDown oPosition buttonclick J"Postit4" (&:&{ 720,105 offset Postit4 3postit4 3Postit4 EnterPage 3Postit4 leavePage keyUp notifyBefore EnterPage textoverFlow postit4 = Postit4 textUnderFlow Forward EnterPage leavePage reader EnterPage reader leavePage notes EnterPage notes UpdateDisplay notifyAfter EnterPage MainWindow notes enabled notifyBefore UpdateDisplay UpdateDisplay When do you When do you use DLLs? title 2550,2687 Postit4 415,717 Postit2 5300,787 Postit3 1440,-12346 Postit1 Because DLLs provide functions for ToolBook, they can be used to extend ToolBook's functionality. There are three main reasons to use DLLs: To add functionality that ToolBook doesn't have. For example, getting a list of the files in a directory GetFileOnlyList() from TB40DOS.DLL.) To speed up an operation. For example, sorting textlines (SortTextLines() from TB40DLG.DLL.) To access another programs data files. For example, read and write data to Paradox database files (TB40PDX.DLL.))) file list jupdateFileInfo enterPage jupdateFileInfo activateInstance fileList getFileOnlyList uncheckLinks updateFileInfo tb40dos.dll getFileOnlyList getCurrentDrive getCurrentDirectory checkLinks tb40do.dll uncheckLinks notifyAfter updateFileInfo "activateInstance notifyBefore ; path, file checkLinks "*.*" fileList = getFileOnlyList( N, "", "N") uncheckLinks linkDLL systoolBookDirectory & "tb40dos.dll" STRING getCurrentDrive() *getCurrentDirectory( unlinkDLL ry & " file list tbk_wid_name 1.BMP 2.BMP 3.BMP 4.BMP 5.BMP BULLET.BMP DESIGN.TBK DESIGN10.TBK DESIGN11.TBK DESIGN12.TBK DESIGN13.TBK DESIGN2.TBK DESIGN3.TBK DESIGN4.TBK DESIGN5.TBK DESIGN6.TBK DESIGN7.TBK DESIGN8.TBK DESIGN9.TBK DLLS2.TBK DLLS3.TBK DLLS4.TBK DLLS5.TBK DLLS6.TBK MARK.ICO OPTIMIZ.PALBMP BULLET.SCN BULLETSM.BMP BUTTON.BMP CLIPBORD.ICO CONTENTS.ICO CTL3DV2.DLL DAVE.TBK DAVETEMP.TBK DESIGN.TBK DESIGN10.TBK DESIGN11.TBK DESIGN12.TBK DESIGN13.TBK DESIGN14.TBK DESIGN15.TBK DESIGN16.TBK DESIGN17.TBK DESIGN18.TBK DESIGN19.TBK DESIGN2.TBK DESIGN20.TBK DESIGN21.TBK DESIGN3.TBK DESIGN4.TBK DESIGN5.TBK DESIGN6.TBK DESIGN7.TBK DESIGN8.TBK DESIGN9.TBK DLL2.TBK DLL3.TBK DLL4.TBK DLL5.TBK DLLCONT.DOC DLLSPEC1.DOC FRCTBBLE.BMP GO.ICO GROUP.BMP GROUPCHR.BMP HEIR.BMP HEIR.SCN HEIR2.BMP HEIR3.BMP HEIRCHR.BMP MARK.ICO NERD.ICO NOMARK.ICO OLDHEIR.LOG OLDHEIR.OLD OLDHEIR.TBK PORCHE.SCN PORSHE.BMP POSTIT.ICO ROBTEMP.TBK ROBTEMP2.TBK SBOOK.ICO SBOOKMRK.ICO SCLIPBRD.ICO SMARK.ICO SNOMARK.ICO SPEC1.DOC SPOSTIT.ICO STAR.BMP STAR.SCN STOP.ICO SYSTEM.ICO SYSTEM2.BMP SYSTEMP.BMP SYSTEMP2.BMP TEST1.TBK VIEWER.ICOHLP WRKBNCHT.DLL MTB30ANM.SBK MTB30BAS.DLL MTB30BAS.MAP MTB30BIT.AMH MTB30BMP.DLL MTB30BMP.MAP MTB30CBT.DLL MTB30CMP.DLL MTB30CVT.DLL MTB30CVT.MAP MTB30EDT.DLL MTB30FLT.DLL MTB30LNL.DLL MTB30MM.DLL MTB30MM.INI MTB30MM.SBK MTB30NET.EXE MTB30RED.DLL MTB30REG.TXT MTB30RUN.EXE MTB30UTL.DLL MTB30XTR.DLL MTBOBJ.SBK MTBPREFS.EXE MTBSBKS.SBK MTBXFER.TBK NEWHOOK.BAT ODBC1.TBK PALED30.EXE PALED30.HLP PARADOX.ATS PATCH.EXE PATCH.RTP PATCH1.TBK PATHANIM.HLP PCDLIB.DLL PCDXBMP.DLL PHOTO.DLL PRINTWND.SBK PRINTWRK.TBK PXENGWIN.DLL README.TXT README.WRI REFSHELF.EXE RELNOTES.HLP RELNOTES.WRI RTA25056 RTB25056 RTP-DISK.ID SCRNCAMP.EXE SCRNCAMP.TXT SCRWALK.ICO SCRWALK.TBK SPF.TBK STUDENT.EXE STUDENT.HLP SYSINFO.EXE TB30DB3.DLL TB30DLG.DLL TB30DOS.DLL TB30PDX.DLL TB30WIN.DLL TB30WIN.TBK TB30XTR.DLL TBKDB3.DLL TBKDLG.DLL TBKFILE.DLL TBKSHELF.EXE TBKWIN.DLL TBLOAD.EXE TEMP.TBK TEST.TBK THUMB.SBK UTILS.ATS VAL.TBK VEAMAA51.LEX WAVEED30.EXE WAVEED30.HLP WINCOMT.DLL WINCONST.HLP WRAPBAR.DLL WRKBNCHT.DLL directories directories tbk_wid_name PALTESTAHDW ARNOLD CTLOCAL DEVUTIL DSPUTIL EXCEL FLOWCHAR IDAPI INFOMDLR MAILTMP MDIABLTZ MTB30 NECAUDIO SECRETS SYSINFO TOOLBOOK VIPER WINDOWS WINFAX WINWORD WSCAN WSCANDATNSTVER LISTHORZ LOWPASS MACROHLP MAKEAPP MCITEST MEMORY MIDIMON MULTIPAD MUSCROLL MYPAL MYSCRIB OUTPUT OWNCOMBO OWNERB PALETTE PENCNTL PENPAD PRNTFILE PROFILER QWGDEMO REVERSE ROTARY SELECT SHOWDIB SHOWGDI SNOOP SORTDEMO SRVRDEMO TDOSMEM TIMERS TOOLHELP VERSTAMP WINMEM32 WMFDCODE XTENSION LAURELM HOURIR BRIANT CHARLESO ERIKR FRANKL DICKE BRUCEL MIYUKIH JOHNJ SARAHV TRANSFER CHARLES CHRISC CHUCKW CLAUDE STEVEW CATHYS ALLANF LENORAF CRAIG JOHNCO DANNS DARLENEM DAVEH KEVINB LINDAA DAWNM DEBBIE INGRIDF DENNISO STEVET GIGIL DOUGY TERRYL WHITEY SCOTT MIREIZ LORIJ CHARLESC TAMMYH AUSTRIA MITCHELL SWISS SAVER DENNISC DOUGK EPOCH SCOTTM MIKEF GER_CPL ELAINER MELODY JOHNGO SCOTTSC GREGE HARRIETL HARRYS CSC_TOM JACKIEV MIKEN JEAND JEFFA JOELK JEFFU JENNIFER WHITNEYM JEREANG DICKH JANETS RANDYA JOHNA JOHNB JOHNC JOHNG JOHNT JONES JORDANS JOSEPHB JOSHB JULIE KATHERIN KEITHC YVETTEB DIDIERB LANCE LAURELC LISAA CSC_TAMY LORIP WAYNEW MARCS MARIEF BETHR MARKMA MARTY KIKIW RICKS BRIANH MICHAELS JEFFM DEBBIEP MIKEM MOUSE NADIMH NANETTE NORMS PAULD PAULG PAULM PHILP LOGOS DENNISL RICKE MICHELEC DIANED ROSSG ROSSH CHARLOTT SCREENS SHABBIR LISAM SARAHH SHELLEYH SHERRI SHIRLEY SHUANGL SKUSALES STEVEB STEVEBA STEVEBEC STEVENW SUSAND SUSANM SUZYS MARKR TERONU TRACEY TRAINING TYLERB SCOTS WHOWHERE WINNIE TONYA SUSANP DAVIDS SYPLUS JOHND DALEW JENNW JULIEP BETHH PRODUCTI MIKES MARGOTP MICHAELO STEVEC JANETL LYNNEP TYRONEF MIKEST KRISTINE BILLS SANDYW GAARL MIKEP BRADC SUSANH STEPHEN STEVEF Drives Drives tbk_wid_name &Directories D&rives Fi&les These Widgets have code that reads drive directory and file information from your hard drive. TB40DOS.DLL Function Widgets.\ updateFileInfo updateDirectoryInfo selectFile updateDirectoryInfo updateFileInfo enterPage activateInstance What does it 2550,5423 Postit4 2550,5567 Postit2 415,3597 Postit3 5300,3667 Postit1 What does it mean to link a DLL? title Because DLLs are accessed dynamically at runtime, Windows has no way of knowing which DLLs need to be accessed when the application launches. Windows waits for an application to instruct it as to which DLLs need to be loaded. The process of attaching DLLs dynamically for an application to access is called linking. Windows keeps a table of the applications and the DLLs that are currently linked to them. To link DLLs from ToolBook, you use the LinkDLL structure. Chapter 12, "Using dynamic link libraries" in the OpenScript Reference Manual is an excellent resource for learning the basics of DLL use from ToolBook. We recommend that you read this chapter in conjunction with using this tips book.ook.ook..tips book.tips book..e of a program can link to different DLLs. Several programs can link to a single DLL.o different DLLs. Several programs can link to a single DLL. Windows only keeps one copy of the DLL loaded no matter how many applications are using it. popuptext Memory Use popTitle Each running instance of a program can link to different DLLs. Several programs can link to a single DLL. Windows keeps only one copy of a DLL loaded no matter how many applications are using it. To use functions from a DLL you must link them at runtime.. 1440,-9346 LinkDLL control structure 2550,6575 Postit4 415,4605 Postit2 5300,4675 Postit3 1440,-8146 Postit1 LinkDLL control structure title In OpenScript, the linkDLL control structure is the mechanism for linking functions from a DLL. Because Windows sets up the attachment between the DLL and an application, any book opened in the same instance of ToolBook can use any functions linked since that instance was started. ed. ink a DLL we need to call the unlinkDLL command. ToolBook will keep a DLL linked until unlinkDLL has been called the same number of times that the linkDLL structure block was ran. NOTE: Among other things restore system will unlink all DLLs in the current instance of ToolBook. A separate linkDLL control structure is needed for each instance of linking to a DLL. popuptext LinkDLL Structure popTitle --Example LinkDLL ControlStructure linkDLL sysToolBookDirectory&"TB40WIN.DLL" STRING getIniVar(STRING,STRING,STRING) end LinkDLLLL getIniVar Registered Apps ASYM.INI Mtb40 tb40win.dll getIniVar buttonClick buttonClick --Find out where MTB installed. linkDLL systoolBookDirectory&"tb40win.dll" STRING getIniVar( "Registered Apps","Mtb40","ASYM.INI") MTB Directory ""#f,[ 95050919535738599103127501459 ASYM_TpID Using DLLs Within ToolBook title Postit4 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit4 buttonclick ButtonStillDown oPosition buttonclick J"Postit4" 720,105 offset Postit4 3postit4 3Postit4 EnterPage 3Postit4 leavePage keyUp notifyBefore EnterPage textoverFlow postit4 = Postit4 textUnderFlow Forward Postit2 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit2 buttonclick ButtonStillDown oPosition buttonclick J"Postit2" 935,110 offset Postit2 2postit2 2Postit2 EnterPage 2Postit2 leavePage keyUp notifyBefore EnterPage textoverFlow postit2 = Postit2 textUnderFlow Postit3 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit3 buttonclick ButtonStillDown oPosition buttonclick J"Postit3" 745,40 offset Postit3 %3Postit3 %3postit3 EnterPage &3Postit3 leavePage keyUp notifyBefore EnterPage textoverFlow postit3 = Postit3 textUnderFlow notes EnterPage notes UpdateDisplay notifyAfter EnterPage MainWindow notes enabled notifyBefore UpdateDisplay content text Postit1 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit1 buttonclick ButtonStillDown oPosition buttonclick J"Postit1" 630,45 offset Postit1 ]2Postit1 ]2postit1 EnterPage ^2Postit1 leavePage keyUp notifyBefore EnterPage textoverFlow postit1 = Postit1 textUnderFlow EnterPage leavePage UpdateDisplay reader EnterPage reader leavePage Aliasing DLL functions 2550,7871 Postit4 415,5901 Postit2 5300,5971 Postit3 1440,-6946 Postit1 Aliasing DLL functions title You may encounter two problems when linking to functions from DLLs. Functions linked from a different DLL may have the same name or may share a name with an OpenScript function. Both of these problems can be solved by aliasing DLL functions in the linkDLL statement. By assigning an alias when declaring a DLL function you ensure two things resolve name conflicts and ensure readability.....ity.ity. resolve name conflicts readability name conflicts readability ssssssssssssssssssssssss........................se you pick the usable name...................d. OpenScript functions always take precedence over DLL functions. popupText A function declared with an alias may only be accessed via the alias name. popupText --Example LinkDLL Control Structure with alias linkDLL sysToolBookDirectory&"TB40WIN.DLL" STRING getSetupInfo = \ getIniVar(STRING,STRING,STRING) end LinkDLL Registered Apps getIniVar getSetupInfo /getSetupInfo ASYM.INI Mtb40 tb40win.dll buttonClick buttonClick --Find out where MTB installed. linkDLL systoolBookDirectory&"tb40win.dll" STRING getSetupInfo = getIniVar( +("Registered Apps","Mtb40","ASYM.INI") MTB Directory Unlinking DLLs Unlinking DLLs title 2550,7583 Postit4 415,5613 Postit2 5300,5683 Postit3 1440,-7246 Postit1 ToolBook keeps track of which DLLs have been linked, what aliases the functions have been assigned, and how many times a particular DLL has been linked. The number of times a DLL has been linked is called its reference count. To unlink a DLL and free up the system resources used by the link, call unlinkDLL. When the unlinkDLL command is used, ToolBook decrements the reference count of the DLL indicated. If the reference count of the DLL reaches 0, ToolBook notifies Windows to destroy the link. To find out if a DLL has been removed, check the sysLinkedDLLs property after calling the unlinkDLL command. SysLinkedDLLs returns a list of the DLLs currently linked to the instance of ToolBook. popupText tb40pdx.dll Unlinking Second Link of DLL getPXuserInfo First Link of DLL buttonClick buttonClick Request "First Link linkDLL systooLBookDirectory&"tb40pdx.dll" STRING getPXuserInfo() `Second 3fo() csysLinkedDLLS "Unlinking" unlinkDLL " UnLink Example UnLink example button script. to handle buttonClick Request "First Link of DLL" linkDLL sysTooLBookDirectory&"tb40pdx.dll" STRING getPXuserInfo() end Request "Second Link of DLL" linkDLL sysTooLBookDirectory&"tb40pdx.dll" STRING getPXuserInfo() end while sysLinkedDLLS contains "tb40pdx.dll" request "Unlinking" unlinkDLL "tb40pdx.dll" end Windows v. OpenScript 2550,10319 Postit4 415,8349 Postit2 5300,8419 Postit3 1440,-4396 Postit1 Windows v. OpenScript data types title Windows and most Windows applications are developed in the C programming language. Therefore, all the documentation and information about Windows programming refers to data types for variables and parameters that are foreign to OpenScript. For a table which shows which Windows data types match to which OpenScript data types, refer to Chapter 12, "Using dynamic link libraries" in the OpenScript Reference Manual. To the right is a reference to some of the common Windows data types. It is important to remember that the OpenScript data types are fewer in number than the Windows data types; one OpenScript data type can represent several different Windows data types.pes.pes...................................pe can represent several different Windows data typessss C Programming Lanuage popTitle C and other programming languages are used to develop DLLs and other Windows programs. popupText WORD = Number from 0 to 65536 DWORD = Number from 0 to 4294967296 INT = Number from -32768 to 32768 LONG = Number from -2147483648 to 2147483648 POINTER = A 2-byte value which is an address of memory that contains data. HWND = An access number into the Windows table that identifies a Window. fies each Window. that identifies each Window. dows. Handle popTitle While an HWND is the most common kind of handle we will use from ToolBook, there are several other handles that Windows uses. It's important to remember that each of these handles is a 2 byte value that represents a reference to an object in Windows. popupText Windows data types Reference v. value Reference v. value title 2550,11903 Postit4 415,9933 Postit2 5300,10003 Postit3 1440,-2746 Postit1 With the unique exception of arrays, parameters in OpenScript functions are passed by value. However, there are some such DLL functions which require parameters to be passed by reference. In order to pass data by reference to a parameter in a DLL function, the parameter must have access to the memory address containing the data. For this parameter, we simply pass a pointer (reference) to the address of the data. ta. ta. s a pointer (reference) to the address of the data. one using the OpenScript data type "POINTER". R". lows for changes to the datafunctions to make changes directly to the data. This is done using the OpenScript keyword "POINTER". tly to the source data. d to pass the function a pointer to the data. That is Passing a pointer to the data allows the functions to make changes directly to the source data. Pass By Value popTitle Pass by value means that a copy of the data is made for the handler to work on. Changes to the value of a parameter are not reflected in the orginal variable or property passed to the handler. Literal strings (characters in quotes) can only be passed by value. popupText Pass by Reference popTitle Pass by reference means that the function is making changes directly to the variable passed to the function. Changes to the value of a parameter are reflected in the orginal variable passed to the function. Because properties of objects can only be set from within OpenScript, passing a property by reference does not change the property. popupText A case for pass by reference When a function expects a buffer that means it needs a location to put data into. Cases for pass by value When a function expects a description or a value it expects a copy of the data. In those cases where the documentation for a DLL function doesn't indicate parameter usage, be sure to find out how the function will be using the parameters before using it in OpenScript. Nothing is more dangerous for your ToolBook application than an incorrectly used DLL function......d DLL function. Rules of thumb Pointer referencing Pointer referencing title 2550,11759 Postit4 415,9789 Postit2 415,9933 Postit3 5300,10003 Postit1 You can access global memory in OpenScript using the Pointer() functions. Because OpenScript has no internal ability to allocate global memory from Windows, this has to be done using the Windows Application Programming Interface (API). The API is accessed by linking various Windows functions into the application. A more thorough discussion of the Windows API follows later in this book. For purposes of this example, only a couple of API functions needed. This script example comes from the Auto-Script library (ATS). By using Windows global memory allocation functions, memory can be allocated. Then this memory area, or buffer, can be accessed using the Pointer() functions.ons.ons.ons............, can be accessed by using the pointer() functions..........n this memory area, or buffer, can be accessed by using the pointer() functions. Global Memory popTitle Windows keeps an internal table of memory segments that programs are using. If a program needs a memory segment, it requests the memory from the available (global) memory through the Windows API. popupText Example The example above uses Windows API functions and the Pointer functions to build and use pointers. Although it is a simple example, it does show all the key elements needed to use pointers. Switch to Author level or right-click the button and press the button to look at the script..pt.. 1440,-2746 2550,11903 Common problems 2550,13199 Postit4 415,11229 Postit2 5300,11299 Postit3 1440,-1396 Postit1 Common problems title There are actually very few cases where you will run into problems using DLLs with ToolBook. But in those cases where a problem exists, the result can be severe. Most often, the system will generate a General Protection Fault (GPF). The most common problems are functions declared with the wrong parameter list or called with the wrong parameter list. These problems are usually solved by careful script additions, robust script comments, and accurate testing.............................ting..se problems are usually solved by careful script additions, robust commenting in the script, and accurate testing.... --Example LinkDLL Control Structure with alias linkDLL sysToolBookDirectory&"TB40WIN.DLL" STRING getSetupInfo = \ getIniVar(STRING,STRING,STRING) end LinkDLL --Example LinkDLL Control Structure with alias linkDLL sysToolBookDirectory&"TB40WIN.DLL" STRING getSetupInfo = \ getIniVar(INT,STRING,STRING) end LinkDLLLLL Incorrect Declaration popTitle Correct Declaration Incorrect Declaration In the incorrect example below the STRING parameter has been incorrectly declared as an INT. In this case ToolBook will most likely crash with a General Protection Fault (GPF) in TB40WIN.DLL because the DLL expects a pointer to a string but gets a number instead. When it tries to use the INT as a pointer, it will most likely try to access a piece of memory it shouldn't. Windows 3.1 reports invalid memory access with a GPF. popupText ToolBook system DLLs 2550,13919 Postit4 415,11229 Postit2 5300,12019 Postit3 1440,-646 Postit1 ToolBook system DLLs title Multimedia Toolbook uses several DLLs for its base system. This division of code amongst DLLs allows for three things Modularity Specialization Improved performance A modular application is easier to maintain, because it tends to have similar features grouped together. Developers can become experts in one module, which makes them better at solving problems in that module. Also, because Windows uses a virtual memory system that divides the code into segments, an application can use less RAM than it would require if all the code had to be loaded at once. e. e. ke all this possible....................................................... loaded at once. DLLs make all this possible. at once. once. equire if all the code had to be loaded at once. FTS40ATR.DLL FTS40IQA.DLL FTS40IQR.DLL FTS40MTB.DLL FTS40RDR.DLL FTS40RTF.DLL FTS40SRT.DLL FTS40UD0.DLL FTS40UD1.DLL FTS40UD2.DLL MEDMANT.DLL MTB40BAS.DLL MTB40BMP.DLL MTB40CMP.DLL MTB40CVT.DLL MTB40EDT.DLL MTB40FLT.DLL MTB40HIR.DLL MTB40LNL.DLL B40MM.DLL MTB40RCA.DLL MTB40RCR.DLL MTB40RED.DLL MTB40UTL.DLL MTB40VBX.DLL MTB40XTR.DLL PALOPTX.DLL PCDLIB.DLL PCDXBMP.DLL PHOTO.DLL PXENGWIN.DLL TB40DB3.DLL TB40DLG.DLL TB40DOS.DLL TB40PDX.DLL TB40WIN.DLL WINCOMT.DLL WRKBNCHT.DLL MTB40MM.DLL MTB40RCA.DLL MTB40RCR.DLL MTB40RED.DLL MTB40UTL.DLL MTB40VBX.DLL MTB40XTR.DLL PALOPTX.DLL PCDLIB.DLL PCDXBMP.DLL PHOTO.DLL PXENGWIN.DLL TB40DB3.DLL TB40DLG.DLL TB40DOS.DLL TB40PDX.DLL TB40WIN.DLL WINCOMT.DLL WRKBNCHT.DLL WRKBNCHT.DLL MMTB 4.0 DLL List 2550,13775 415,11949 95050919535738599103127501459 ASYM_TpID What DLLs come with ToolBook? title Postit4 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit4 buttonclick ButtonStillDown oPosition buttonclick J"Postit4" 720,105 offset Postit4 3postit4 3Postit4 EnterPage 3Postit4 leavePage keyUp notifyBefore EnterPage textoverFlow postit4 = Postit4 textUnderFlow Forward Postit2 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit2 buttonclick ButtonStillDown oPosition buttonclick J"Postit2" 935,110 offset Postit2 2postit2 2Postit2 EnterPage 2Postit2 leavePage keyUp notifyBefore EnterPage textoverFlow postit2 = Postit2 textUnderFlow Postit3 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit3 buttonclick ButtonStillDown oPosition buttonclick J"Postit3" 745,40 offset Postit3 %3Postit3 %3postit3 EnterPage &3Postit3 leavePage keyUp notifyBefore EnterPage textoverFlow postit3 = Postit3 textUnderFlow notes EnterPage notes UpdateDisplay notifyAfter EnterPage MainWindow notes enabled notifyBefore UpdateDisplay content text Postit1 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit1 buttonclick ButtonStillDown oPosition buttonclick J"Postit1" 630,45 offset Postit1 ]2Postit1 ]2postit1 EnterPage ^2Postit1 leavePage keyUp notifyBefore EnterPage textoverFlow postit1 = Postit1 textUnderFlow EnterPage leavePage UpdateDisplay reader EnterPage reader Add-On DLLs Add-on DLLs title 2550,14207 Postit4 415,12237 Postit2 5300,12307 Postit3 1440,-346 Postit1 Toolbook and Mutlimedia Toolbook ship with some specific add-on DLLs that provide additional functionality that is needed for some types of applications: TB40DOS.DLL:provides access to DOS commands. TB40WIN.DLL: provides access to common Windows functions. TB40DLG.DLL: provides access to custom and common dialog boxes TB40DB3.DLL:provides access to dbase III database files. TB40PDX.DLL:provides access to Paradox database files. FTS40MTB.DLL: provides full-text search capabilities (Multimedia Toolbook only). only).ook only).k only). Toolbook only)........ok only)................................................ fileExists fileExists tb40dos.dll tb40win.dll I Found TB40WIN.DLL buttonClick buttonClick linkDLL systoolbookDirectory&"tb40dos.dll" INT fileExists(STRING) systoolBookDirectory&"tb40win. @) = 1 "I Found TB40WIN. TB40DOS.DLL w, #> getIniVar Your StartupSysBooks are set to Mtb40.INI toolBook tb40win.dll getIniVar StartupSysBooks buttonClick buttonClick systooLbookDirectory&"tb40win.dll" STRING getIniVar( "Your StartupSysBooks are 5"toolBook"," #","Mtb40.INI") TB40WIN.DLL You selected *.tbk tb40dlg.dll openDlg Choose a Book P6openDLG buttonClick buttonClick systooLbookDirectory&"tb40dlg.dll" STRING openDlg( openDLG(".","*.tbk","Choose a Book"," "You selected "& TB40DLG.DLL Definition 2550,239 Postit4 2550,383 Postit2 2550,527 Postit3 415,-1443 Postit1 Definition title The Windows Application Programming interface (API) is a set of DLLs that contain all the functions that control Windows. There are literally hundreds of functions in the Windows API. A couple of functions that ToolBook developers find helpful include FindWindow(), which returns the handle to any window given a caption or class name and ShowWindow(), which sets the state of another window given its window handle. The Windows API contains some very obscure functions such as PrestoChangoSelector(), which you will never use with ToolBook. The Windows API is composed of three main DLLs: USER, KERNEL, and GDI. The complete Windows API is available to ToolBook via the linkDLL control structure. re. Caption popTitle The text of the window's title bar. popupText Class name popTitle A unique string that identifies a particular application. All ToolBook windows are identified by the same class name. popupText USER, KERNEL, and GDI popTitle These are module names rather than actual DLL file names. For standard Windows API calls, it's best to use the module name rather than the actual file name to ensure the correct file is loaded. popupText KERNEL Section List Contains all user-interface and windowing functions Section List Contains all user-interface and windowing functions. Section List Contains functions that control memory management, loading and executing programs, and scheduling. Section List Contains all graphics functions. 5300,-1373 1440,-14596 95050919535738599103127501459 ASYM_TpID What is the Windows API? title Postit4 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit4 buttonclick ButtonStillDown oPosition buttonclick J"Postit4" 720,105 offset Postit4 3postit4 3Postit4 EnterPage 3Postit4 leavePage keyUp notifyBefore EnterPage textoverFlow postit4 = Postit4 textUnderFlow Forward Postit2 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit2 buttonclick ButtonStillDown oPosition buttonclick J"Postit2" 935,110 offset Postit2 2postit2 2Postit2 EnterPage 2Postit2 leavePage keyUp notifyBefore EnterPage textoverFlow postit2 = Postit2 textUnderFlow Postit3 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit3 buttonclick ButtonStillDown oPosition buttonclick J"Postit3" 745,40 offset Postit3 %3Postit3 %3postit3 EnterPage &3Postit3 leavePage keyUp notifyBefore EnterPage textoverFlow postit3 = Postit3 textUnderFlow notes EnterPage notes UpdateDisplay notifyAfter EnterPage MainWindow notes enabled notifyBefore UpdateDisplay content text Postit1 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit1 buttonclick ButtonStillDown oPosition buttonclick J"Postit1" 630,45 offset Postit1 ]2Postit1 ]2postit1 EnterPage ^2Postit1 leavePage keyUp notifyBefore EnterPage textoverFlow postit1 = Postit1 textUnderFlow EnterPage leavePage UpdateDisplay reader EnterPage leavePage reader Using the Windows 2550,671 Postit4 2550,815 Postit2 2550,959 Postit3 415,-1011 Postit1 Using the Windows API title Just as ToolBook links to its own DLLs, ToolBook can connect to the DLLs that compose the Windows API. In fact, given the DLL name and the proper function declaration, any DLL function can be used with ToolBook. However, like any other DLL function, you need to make certain the function is declared properly. Errors in function declarations can lead to unpredictable results. To the right are some useful functions and the DLLs that contain them. The actual function declarations can be found in the Windows API Help File, WIN31WH.HLP located in the WINAPI directory below the MTB40 directory. Remember when using these functions, it's a good idea to alias your functions to avoid breaking another ToolBook application's script. KERNEL SHELL FindWindow() ShowWindow() ExitWindows() MoveWindow() Winhelp() indow() GlobalAlloc() GlobalLock() GlobalUnlock() GlobalFree() GetDC() ShellExecute() GlobalFree() GetFreeSystemResources() GetProcAddress()GlobalFree() LockWindowUpdate() GetSystemMetrics() GetDesktopWindow() LockInput() ShowCursor() Useful functions 5300,-941 1440,-14146 Using pointers to Using pointers to structures title 2550,1679 Postit4 415,-291 Postit2 5300,-221 Postit3 1440,-13396 Postit1 There are some DLL functions in the Windows API that take a pointer to a structure as a parameter. A structure is a derived data type in C for which ToolBook has no equivalent. Therefore, it can be tricky to use DLL functions that require structures. It is possible, however, to build structures in ToolBook that can be passed to a DLL. The first step is to create a block of global memory as large as the structure using the tbk_getWinPointer() ToolBook function discussed earlier. Before you can populate a memory buffer, you need to know how the structure is designed and how large each element is. Once this is known, populating the structure is done using the Pointer functions discussed earlier. To the right is a list of data types and their size in bytes.tes.ir size in bytes......{ Structures popTitle Structures in C are user-defined types that allow grouping of various data types into a single object. popupText DOUBLE DWORD FLOAT POINTER STRING String popTitle Memory used by a string depends on the size of the string. popupText 22222 Data Type sing pointers to Using pointers to structures (cont.) title 2550,2543 Postit4 415,573 Postit2 5300,643 Postit3 1440,-12496 Postit1 Populating a structure with the Pointer functions is simple once you know the makeup of the structure. For example, a structure composed of a FLOAT, a WORD, and a DWORD is filled in the following manner: get pointerFLOAT (0,pMem, floatVal) get pointerWORD (4,pMem, wordVal) get pointerDWORD (6,pMem, dwordVal) This fills a memory buffer, pMem, with three values at three different offsets. Each member of the memory buffer is given exactly enough room for its type and the buffer is 0-indexed. For instance, the FLOAT is given exactly 4 bytes of space. To the right is an example that returns the dimensions of this window by calling the API function GetWindowRect(). This function requires a pointer to a RECT structure.re................tructure. popTitle This is the return value from tbk_getWinPointer(). popupText floatVal popTitle This is a variable set to the value you would place into the structure. popupText RECT structure popTitle A RECT structure in Windows is a a structure that consists of 4 integer values (2 bytes) that compose the X,Y coordinates for the upper left and lower right corners of a given object. popupText -#, #> -#, #> -#, #> -#, #> GetWindowRect ,CTi4O r1tbk_FreeWinPointer Dimensions of this window are: y[GetWindowRect explanation tbk_getWinPointer buttonClick buttonClick Zpoint pMem linkDLL user INT GetWindowRect (WORD, POINTER) -- create Ibuffer. Enough 4 INTs. f = tbk_getWinPointer(8) jwindowHandle "Dimensions eare: " \ & pointerINT(0, ) & "," & ) & "," & \ ) & "," & -- always remember free memory done. tbk_FreeWinPointer( "explanation" Get Window dimensions explanation leavePage notifyAfter Using this function on the main window is unnecessary because the bounds property of any viewer does the same thing as the GetWindowRect() function. However, this function is the only way to get the bounds of a non-Toolbook window. get the bounds of a non-ToolBook window, this function is the only way to do it.on is the only way to do it. leavePage What is it 2550,383 Postit4 415,-1587 Postit2 5300,-1517 Postit3 1440,-14596 Postit1 What is it for? title Like Windows, the ToolBook system is event-driven. In fact, ToolBook is very tightly integrated with Windows. Messages processed by Windows and not served by any built-in ToolBook message can be intercepted and handled via the translateWindowMessage control structure. An example of a Windows message not handled by ToolBook internally is the WM_ACTIVATE message. The ToolBook message activateInstance, based on WM_ACTIVATE, is sent only when the ToolBook window is activated or deactivated. The button to the right invokes a script that changes the caption of this window when it is deactivated.ted.........ption of this window when it is deactivated.......... deactivated. WM_ACTIVATE popTitle This is the Windows message sent when a window is activated as well as when it is deactivated. popupText untranslate Set caption on deactivate leaveInstance Restore buttonClick Extending toolBook Disabled leaveInstance untranslate leavePage untranslate buttonClick <> "Restore" WM_ACTIVATE = 0x0006 untranslate translateWindowMessage windowHandle on leaveInstance = "Set IhWnd, wmsg, wp wp > 0 e= "Extending toolBook" e= "Disabled" notifyAfter X0006 untranslateWindowMessage Restore Click the button above. Then click on another program, like Program Manager, and watch the ToolBook caption..n..................................... leavePage untranslate reader reader leavePage 95050919535738599103127501459 ASYM_TpID Using translateWindowMessage title Postit4 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit4 buttonclick ButtonStillDown oPosition buttonclick J"Postit4" 720,105 offset Postit4 3postit4 3Postit4 EnterPage 3Postit4 leavePage keyUp notifyBefore EnterPage textoverFlow postit4 = Postit4 textUnderFlow Forward Postit2 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit2 buttonclick ButtonStillDown oPosition buttonclick J"Postit2" 935,110 offset Postit2 2postit2 2Postit2 EnterPage 2Postit2 leavePage keyUp notifyBefore EnterPage textoverFlow postit2 = Postit2 textUnderFlow Postit3 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit3 buttonclick ButtonStillDown oPosition buttonclick J"Postit3" 745,40 offset Postit3 %3Postit3 %3postit3 EnterPage &3Postit3 leavePage keyUp notifyBefore EnterPage textoverFlow postit3 = Postit3 textUnderFlow notes EnterPage notes UpdateDisplay notifyAfter EnterPage MainWindow notes enabled notifyBefore UpdateDisplay content text Postit1 keyUp enterRecordField >= "" VFalse offset ButtonStillDown offset offset buttonDown Postit1 buttonclick ButtonStillDown oPosition buttonclick J"Postit1" 4'F'{ 630,45 offset Postit1 ]2Postit1 ]2postit1 EnterPage ^2Postit1 leavePage keyUp notifyBefore EnterPage textoverFlow postit1 = Postit1 textUnderFlow EnterPage leavePage UpdateDisplay EnterPage Things to watch Things to watch for title 5300,-2669 Postit4 415,-3891 Postit2 2550,-913 Postit3 2550,-769 Postit1 The translateWindowMessage control structure is a powerful method for further controlling the behavior of your ToolBook applications. It should be used with caution because of the many different types of messages in Windows. Unless you fully understand how a message works, do not attempt to trap or handle it. If you do decide to experiment with this feature, make sure you save your work or test your handler in a blank instance of ToolBook first. Also, make sure there is not already a ToolBook message that you could handle first. Finally, when you do use translateWindowMessage, be sure to untranslate that message when it is no longer needed by using untranslateWindowMessage. You can either untranslate a single message or all messages for a given window.dow.... -- untranslate a single message untranslateWindowMessage 0x0006 \ for windowHandle of this windowwHandle of this windowindow -- untranslate all messages untranslateAllWindowMessages for \ windowHandle of this windowdowndow Yes, this is the longest keyword in OpenScript. popupText 415,-2739 1440,-15946 TmpltTool Title Page title ASYM_BeenHere V, #> A AlreadySized updateDisplay A AlreadySized leavePage notifyafter updateDisplay 4AlreadySized Zxsize,ysize xSize = /- (1440/10) l&","& oPosition = 1440/20&","&1440/20 removeBookMark i#gotoBookMark ButtonClick ButtonClick gotoBookMark Go to Book Mark popHelpText addBookMark &eBookMark buttonClick 1, "@ nomark bookMarks updateDisplay buttonClick BookMark notifyAfter updateDisplay bookMarks onormalGraphic = icon "mark" #on "nomark" Add Book Mark popHelpText 8notePad buttonClick buttonClick notePad Note Pad popHelpText w, #? title updateDisplay notifyAfter updateDisplay ZoldLock = lockScreen J" = title -- -- <> NULL & ":" && otextoverFlow < 1 Extending ToolBook (postit buttonClick buttonClick postit Post Notes pophelpText Table of Contents buttonClick buttonClick MainWindow "Table Contents" Table of Contents popHelpText updateDisplay leavePage 95050919534438586212124501368 ASYM_TpID TutorialList ASYM_BeenHere Rebuild buttonClick buttonClick &Rebuild bottomLine Cancel TutorialList buttonClick buttonClick isOpen "TutorialList" close &Cancel Rebuild tutorialList &Cancel &Rebuild TutorialList I can't find the tutorial book File Not Found buttonClick buttonClick 4tutorialList[][] selectedTextLines "TutorialList" 8(path ][2]) c"File Not Found" ][2]) "I can't find the f"&Cancel" "&Rebuild" isOpen close &Go To ThreeDeeRect out,sculpted TutorialList tempFileinfo tutorialList TutorialList getInivar tutorial.ini enterpage notifyBefore 4tutorialList[][] counter Ztempfile tempFileinfo = getInivar("TutorialList", D,path h.ini") ctempFileInfo <> "" W) = 2 ][1] = ][2] = dimensions( i][1] &CRLF --Clear off the extra topLine enterpage PopText 95050919593838940058139359890 ASYM_TpID Notepad ASYM_BeenHere out,sculpted ThreeDeeRect Notes Notes Notepad notes enterPage keyChar enterField NotifyBefore MainWindow "Notes" "Notepad" = notes key,isShift,isCtrl keyEnter buttonClick bottomLine topLine Notes notes Notepad PupdateDisplay buttonClick buttonClick MainWindow notes "Notes" "Notepad" updateDisplay isOpen close &Save Cancel Notepad buttonClick buttonClick isOpen "Notepad" close &Cancel Reset Notes Notepad notes buttonClick buttonClick MainWindow "Notes" "Notepad" = notes &Reset enterPage Notepad 9505091959443894531416471984 ASYM_TpID PopHelp ASYM_BeenHere ShowText 1,"JdY 1,"J2Y updateDisplay notifybefore updateDisplay = 1440/14 * )-1,1440/5 otextoverFlow > 10 Table of Contentss one copy of the DLL loaded no matter how many applications are using it.vailable for content. updateDisplay 95050919570338784412823287292 ASYM_TpID Using the Windows Common Problems using pointers to LinkDLL Control Structure Add-On DLLs Rules of thumb PopHelp Designing for Efficiency When do you Reference v. value Pointer Referencing Windows v. OpenScript ToolBook System DLLs What Does it Table of Contents Parameters v. variables Shared Scripts definition Unlinking DLLs TutorialList What are DLLs? When to use Aliasing DLL Functions TmpltTool things to watch What is it Notepad PopText Notepad